我实际上是在尝试获取有关我的应用程序的信息。
我必须按日/月/年来获取一些信息分组。我具有良好的结果属性,但是即使数据库中没有任何内容,也会显示信息。
注意:“开始”和“结束”是格式正确的日期。
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的信息。在我的数据库中,我只有2组数据(截至2015年3月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。
谢谢前进
将$ match拆分为dateEntre
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
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句