帖子文档如下所示:
{
...
comments: [{
_id:...
body:...
createDate:...
},
...
]
}
如何从该系列中获取最近的10条评论?
答案 0 :(得分:0)
如果您的评论始终处于可预测的顺序(即最新的或最新的),那么您可以使用$slice
运算符在查询时仅返回完整comments
字段的子集:
test> db.foo.save({name: "hello", comments: [1, 2, 3, 4, 5]})
test> db.foo.find({}, {comments: {$slice: 3}})
{ "_id" : ObjectId("4ec7d1c8e72da9b6f31e2528"), "name" : "hello", "comments" : [ 1, 2, 3 ] }
test> db.foo.find({}, {comments: {$slice: -3}})
{ "_id" : ObjectId("4ec7d1c8e72da9b6f31e2528"), "name" : "hello", "comments" : [ 3, 4, 5 ] }
您可以在http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields
了解有关控制返回字段的详情答案 1 :(得分:-1)
无法从嵌入文档中部分选择项目。无论它将返回整个文档数组。您必须在应用程序代码中执行过滤器。这是唯一的方法。
但我建议有一个单独的评论集。那样你就可以跳过&限制集。