猫鼬,mongodb,错误的聚集分组

Mfrachet

我实际上是在尝试获取有关我的应用程序的信息。

我必须按日/月/年来获取一些信息分组。我具有良好的结果属性,但是即使数据库中没有任何内容,也会显示信息。

注意:“开始”和“结束”是格式正确的日期。

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。

谢谢前进

Dineshaws

将$ 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章