jav*_*dee 5 mongodb mongodb-query aggregation-framework
样例Mongo文件:
{
"_id": "128374",
"x": [
{
"i": "83847575",
"y": [
{
"i": "9389489283",
"t": "2014-04-11T20:46:57+0000"
},
{
"i": "9389489284",
"t": "2014-04-11T20:47:57+0000"
}
]
},
{
"i": "83847576",
"y": [
{
"i": "2382349385",
"t": "2014-01-15T23:43:29+0000"
},
{
"i": "9389489286",
"t": "2014-04-11T20:47:57+0000"
},
{
"i": "9389489286",
"t": "2014-04-11T20:49:57+0000"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
如何获取每个文档的内部数组“ y”的最大数量?我要解决的问题是获取最大数量为y的记录。谢谢!
以下是我的总计数“ y”。
db.coll.aggregate(
{ "$unwind" : "$x" } ,
{ "$project" : { "x" : "$x" } } ,
{ "$unwind" : "$x.y" },
{ "$group" : { _id : null, number : { $sum : 1 } } } )
Run Code Online (Sandbox Code Playgroud)
为了计算内部元素,您需要一些东西来锚定分组。在这种情况下,您可以使用i与以下级别相同的元素y:
db.collection.aggregate([
{ "$unwind" : "$x" },
{ "$unwind" : "$x.y" },
{ "$group" : {
"_id" : {
"_id": "$_id",
"xi":"$x.i"
},
"number" : { "$sum" : 1 }
}},
{ "$sort": { "number": -1 }},
{ "$limit": 1 }
])
Run Code Online (Sandbox Code Playgroud)
因此,通过将分组键与文档复合,_id您可以通过将其排序到顶部来匹配具有最大内部值的文档y作为计数。
| 归档时间: |
|
| 查看次数: |
4144 次 |
| 最近记录: |