我目前在mongo中为我的应用程序设置了这样的对象(简化的示例,为清楚起见,我删除了一些不相关的字段):
{
"_id" : ObjectId("529159af5b508dd71500000a"),
"c" : "somecontent",
"l" : [
{
"d" : "2013-11-24T01:43:11.367Z",
"u" : "User1"
},
{
"d" : "2013-11-24T01:43:51.206Z",
"u" : "User2"
}
]
}
我想做的是运行一个查找查询,以返回在“ l”下具有最大数组长度的对象,并按最高->最低,最高25个结果进行排序。有些对象在数组中可能有1个对象,有些对象可能有100个。我想找出在“ l”下最多的对象。我是mongo的新手,直到现在为止,其他所有工作都可以解决,但是我无法找出正确的参数来获取此特定查询。让我感到困惑的是如何处理数组的长度,排序等。我可以通过解析集合中的所有内容来手动编写代码,但是我敢肯定,mongo必须有一种方法可以做到这一点更有效率。我不反对学习,如果有人知道任何资源来进行更高级的查询,或者可以帮助我,d真的要感谢,因为这是最后一步!:-)
附带说明一下,node.js和mongo在一起非常棒,我希望很久以前就开始结合使用它们。
使用聚合框架。就是这样:
db.collection.aggregate( [
{ $unwind : "$l" },
{ $group : { _id : "$_id", len : { $sum : 1 } } },
{ $sort : { len : -1 } },
{ $limit : 25 }
] )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句