目前我的应用程序在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有更有效的方法来完成此任务。如果有人知道更高级的查询资源或可以帮助我,我将不胜感激,因为这是最后一块缺失的部分! :-)另外提一下,node.js和Mongo一起使用非常棒,我希望很早就开始同时使用它们了。
{'l.0': { $exists: true } }
并不断增加0到1到2...直到找到具有最多项的文档。虽然这对于想要按最高->最低排序的人没有帮助。 - Raphael