考虑以下帖子设计:
{
title: string,
body: string,
comments: [
{name: string, comment: string, ...},
{name: string, comment: string, ...},
...
]
}
...
1)我想选择我收藏中的所有帖子,并按评论最多的帖子对它们进行排序。我假设由于 .length 变量始终通过 javascript 设置,因此可以使用它进行排序,但我不知道如何或是否实际上更有效地将评论计数存储在帖子文档的字段中?
1.1)或者将评论计数存储在单独的文档中并不断更新是否更有意义?
2) 选择帖子时,是否可以限制结果仅返回帖子文档的最后 3 条评论,而不是整个数组?
您需要使用aggregate
command
这将为您提供一个帖子 _id 列表,其中包含按计数倒序排序的评论数量。
您可以使用 $limit 运算符返回前 x 行。例如{ $limit : 5 }
db.posts.aggregate(
{ $unwind : "$comments" },
{ $group : { _id : "$_id" , number : { $sum : 1 } } },
{ $sort : { number : -1 } }
);
看一看http://docs.mongodb.org/manual/tutorial/aggregation-examples/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)