MongoDB,如何对文档进行分组

2024-01-03

我的收藏有这样的数据:

[
  {
    "code": 1,
    "location": "1 QUEEN STREET",
    "_id": "1",
  },
  {
    "code": 1,
    "location": "2 KING STREET",
    "_id": "2"
  },
  {
    "code": 2,
    "location": "1 QUEEN STREET",
    "_id": "3"
  },
  {
    "code": 2,
    "location": "2 KING STREET",
    "_id": "4"
  },
  {
    "code": 2,
    "location": "2 KING STREET",
    "_id": "5"
  }

]

查找将按“位置”对文档进行分组,并向每个文档添加一组代码,其中包含每个唯一代码的计数。

输出将是这样的:

[
  { "location": "1 QUEEN STREET", "codes":["code1":1,"code2":1]},
  { "location": "2 KING STREET", "codes":["code1":1,"code2":2]}
]

我尝试过这样的查询:

aggregate([{ $group : { _id : "$location", codes: { $addToSet: "$code",count: { $sum: 1 } } } }])

aggregate([{ $group : { _id : "$location", codes: {$group:{_id:"$_code",count:{$sum :1}}} } }])

谢谢你的帮助。


aggregate(
[
    { $group : { 
            _id : { location: "$location", code: "$code"},
            count: { $sum:1 }
        } 
    },
    { $group: {
            _id: "$_id.location", 
            codes: {$addToSet: {"code":"$_id.code", "count":"$count"}}
        } 
    },
    { $project: { location: "$_id", codes: 1, _id: 0}},
]
)

Result:

{ "codes" : [ { "code" : 1, "count" : 1 }, { "code" : 2, "count" : 1 } ], "location" : "1 QUEEN STREET" }
{ "codes" : [ { "code" : 1, "count" : 1 }, { "code" : 2, "count" : 2 } ], "location" : "2 KING STREET" }

注意:无法实现您想要的输出,列表中的元素存在格式错误,您应该使用字典,{}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB,如何对文档进行分组 的相关文章

随机推荐