我实际上是想获取有关我的应用的一些信息。
我必须按日/月/年获得一些信息分组。我有很好的结果属性,但即使数据库中没有任何内容,也会显示信息。
注意:开始和结束都是格式良好的日期。
TraitementNettoyage.aggregate([
{$match: { 'dateEntre': {$gt: start}, 'dateEntre': {$lt: end} }},
{$group: {'_id': {'day': {'$dayOfMonth': '$dateEntre'}, 'month': {'$month': '$dateEntre'}, 'year': {'$year': '$dateEntre'}}, count: {$sum: 1}}}
]).exec((err, res)=>
console.log res
)
我得到了这个结果集:
[
{
"_id": {
"day": 24,
"month": 3,
"year": 2015
},
"count": 2
}
]
事实是我在2015-03-24的DB中没有任何内容。 在我的数据库中,我只有2组数据与2015-03-23日期。
在我的请求中,我应该更正以获得确切的两个结果集:
[
{
"_id": {
"day": 24,
"month": 3,
"year": 2015
},
"count": 0
}
]
和
[
{
"_id": {
"day": 23,
"month": 3,
"year": 2015
},
"count": 2
}
]
编辑:
这里是$ lte和$ gte的结果集:
[
{
"_id": {
"day": 25,
"month": 3,
"year": 2015
},
"count": 2
},
{
"_id": {
"day": 24,
"month": 3,
"year": 2015
},
"count": 2
}
]
问题是计数不正确。事实上,2015年3月24日应为2,2015年3月25日为0。
感谢您提前
答案 0 :(得分:1)
拆分dateEntre的$ match
TraitementNettoyage.aggregate([
{$match: { 'dateEntre': {$gte: start}}},
{$match: { 'dateEntre': {$lte: end}}},
{$group: {'_id': {'day': {'$dayOfMonth': '$dateEntre'}, 'month': {'$month': '$dateEntre'}, 'year': {'$year': '$dateEntre'}}, count: {$sum: 1}}}
]).exec((err, res)=>
console.log res
)