mongodb将重复性文档分组到一个数组

我正在尝试将特定键的所有文档组织成一个数组。如果任何其他参数不同,我不想一次又一次地获得相同的关键元素。 样本文档:-

{
    name:"sweta",age:23
    address:india,hobby:singing
},{
    name:"john",age:24
    address:germany,{
    name:"peter",age:24
    address:india,hobby:dancing
},{
    name:"marry",

我尝试了什么?

return db.aggregate([
 {
       $match:{age:23}
 },{
       "$group":{
           "_id": {"age":"$age"},}
 },{   
       "$group":{
           "_id":"$_id.age","name":{ $first: "$_id.name"},"address":{ $first: "$_id.address"},"hobby":{ $first: "$_id.hobby"},}
])

以这种格式进行基本分组会减少最大的业务逻辑。

预期答案=

  [
      {
        "23":[
                {name:"sweta",address:india,hobby:singing},{name:"marry",]
       },{
          "24":[
                {name:"john",address:germany,{name:"peter",address:france,hobby:singing}
             ]
         }

 ]

有人知道如何得到这个吗?

charmprefect 回答:mongodb将重复性文档分组到一个数组

您可以尝试

db.getCollection('Test').aggregate([
{ $group: { _id: "$age",data: { $push: {"name":"$name","address":"$address","hobby":"$hobby"}},}
},{ "$replaceRoot": {
    "newRoot": { 
      "$arrayToObject": {
        "$concatArrays": [
          [
            { "k": {$toString: "$_id"},"v": "$data"  }
          ]
        ]
      } 
    }
  }}
])

结果:

[ {
    "24" : [ 
        { "name" : "john","address" : "germany","hobby" : "singing" },{ "name" : "peter","address" : "india","hobby" : "dancing" }
    ]
},{
    "23" : [ 
        { "name" : "sweta",{ "name" : "marry","hobby" : "singing" }
    ]
}]
本文链接:https://www.f2er.com/3146222.html

大家都在问