繁体   English   中英

MongoDB 在子文档中聚合、分组和计数

[英]MongoDB aggregate, group and count in subdocuments

我有点卡在这里......我一直在关注 MongoDB 文档:

{
    "_id": {
        "$oid": "63a3023e71a56a599007613b"
    },
    "image_uuid": "b9ff04d68b954ea390c8aa83644d5d08",
    "votes": {
    "42ceac05112d4092ad0d1f244a0016dd": {
        "created": {
            "$date": {
                "$numberLong": "1671627387000"
            }
        },
            "vote": "up"
        },
    "42ceac05112d4092ad0d1f244a0016de": {
        "created": {
            "$date": {
                "$numberLong": "1671627351000"
            }
        },
        "vote": "down"
        }
    }
}

有什么方法可以按“投票”进行分组和计数吗? 我只对本文档中所有“向上”和“向下”的总和感兴趣。

谢谢,巴斯蒂安

尝试了在 Stackoverflow 上找到的所有可能示例,但我对 MongoDB 还很陌生。

试试这个:

db.collection.aggregate([
   { $set: { votes: { $objectToArray: "$votes" } } },
   {
      $project: {
         counts: {
            up: { $size: { $filter: { input: "$votes.v", cond: { $eq: ["$$this.vote", "up"] } } } },
            down: { $size: { $filter: { input: "$votes.v", cond: { $eq: ["$$this.vote", "down"] } } } }
         }
      }
   }
])

蒙戈游乐场

Wernfrieds 的回答成功了,非常感谢,我的问题是。 我不知道如何将一堆对象转换为数组...

谢谢大家,圣诞快乐,新年快乐! 巴斯蒂安

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM