V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hengo
V2EX  ›  问与答

请教大家一个关于 MongoDB 聚合查询的问题

  •  
  •   hengo · 2019-08-23 10:26:51 +08:00 · 1190 次点击
    这是一个创建于 1705 天前的主题,其中的信息可能已经有所发展或是发生改变。

    能不能在多条MongoDB记录中,聚合查询,一次输出多个字段的总记录条数 比如

    { "month" : 3, "day" : 5, "year" : 2019 }
    { "month" : 2, "day" : 4, "year" : 2018 }
    { "month" : 3, "day" : 1, "year" : 2018 }
    { "month" : 5, "day" : 2, "year" : 2019 }
    { "month" : 5, "day" : 1, "year" : 2019 }
    

    比如一次性查询: { month = 3, year = 2019 }

    输出结果集: { monthCount = 2, yearCount = 3}

    现在我只能根据字段去查找记录数,不能去给字段匹配相应的值去查询。

    7 条回复    2019-09-06 09:27:15 +08:00
    lwd219
        1
    lwd219  
       2019-08-23 14:21:17 +08:00
    aggregate ?
    licht114
        2
    licht114  
       2019-08-23 14:53:05 +08:00
    坐等 MongoDB 大神,我也想知道有没有骚操作
    hengo
        3
    hengo  
    OP
       2019-08-23 15:02:41 +08:00 via Android
    @lwd219 对,以前我是一个一个查的,效率比较低,因为我们这边数据量可能比较大,所以想一次性查,效率稍微高一点。
    Philippa
        4
    Philippa  
       2019-08-23 15:45:59 +08:00
    ```
    {
    "$group": {
    "_id": null,
    "month": {
    '$sum': {
    '$cond': [
    {'$eq': ["$month", "3"]},
    1, 0
    ]
    }
    },
    "year": {
    '$sum': {
    '$cond': [
    {'$eq': ["$year", "2019"]},
    1, 0
    ]
    }
    },
    }
    },
    {$project: { 'year': 1, 'month': 1, _id: 0 } }
    ```
    没测过
    phpdever
        5
    phpdever  
       2019-08-23 17:02:06 +08:00   ❤️ 1
    phpdever
        6
    phpdever  
       2019-08-23 17:03:59 +08:00   ❤️ 1
    @licht114 看我回复
    licht114
        7
    licht114  
       2019-09-06 09:27:15 +08:00
    @phpdever 感谢大神分享
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1013 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:05 · PVG 06:05 · LAX 15:05 · JFK 18:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.