$ group与mongodb中的嵌套数组

时间:2018-08-16 09:45:42

标签: mongodb mongodb-query aggregation-framework

我有一个包含此格式文档的收藏集

  {"_id" : NumberLong(567719019),
   "date" : ISODate("2018-07-17T09:56:57.000Z"),
"conclusion" : [ 
    {
        "rname" : "LAM",
        "rulename" : "_OK"
    }
],
"indication" : [ 
    {
        "rname" : "AM",
        "rulename" : "_STABLE"
    }
],
"error" : [ 
    {
        "errorkey" : "tesd",
        "testname" : "d"
    }, 
    {
        "errorkey" : "v",
        "testname" : "c"
    },
    {
        "errorkey" : "td",
        "testname" : "d"
    }, 
    {
        "errorkey" : "va",
        "testname" : "c"
    }
]

}

因此,我想对表中的一个或两个元素进行汇总和分组,例如,我想获取集合中所有不同的errorkey并获取我试图像这样工作的最大出现错误键

       aggregate([{ $group : {_id : { "errorkeyname": 
     "$error.errorkey"}, count: { $sum: 1 } }},{ $out : "Cllection" }])

但是它没有给出结果,没有任何帮助

2 个答案:

答案 0 :(得分:0)

尝试一下$unwind $group $push $addToSet $sort $limit

compile('net.sf.jt400:jt400:9.5:jt400_jdk8')

答案 1 :(得分:0)

您需要$unwind error字段,然后可以将$grouperror.errorkey一起使用

db.collection.aggregate([
  { "$unwind": "$error" },
  { "$group": {
    "_id": "$error.errorkey",
    "count": { "$sum": 1 }
  }},
  { "$sort": { "count": 1 } }
])