Mongoose,mongodb,聚合分组错误
Mongoose, mongodb, bad aggregate grouping
我实际上是在尝试获取有关我的应用程序的一些信息。
我必须按日/月/年获取一些信息分组。我有好的结果属性,但即使数据库中没有任何信息,也会显示信息。
注意:开始和结束日期格式正确。
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-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
}
]
问题是计数不正确。事实上,24/03/2015 应该是 2,25/03/2015 应该是 0。
感谢提前
拆分 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
)
我实际上是在尝试获取有关我的应用程序的一些信息。
我必须按日/月/年获取一些信息分组。我有好的结果属性,但即使数据库中没有任何信息,也会显示信息。
注意:开始和结束日期格式正确。
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-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
}
]
问题是计数不正确。事实上,24/03/2015 应该是 2,25/03/2015 应该是 0。
感谢提前
拆分 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
)