我想查询我的帖子集合中的所有项目以查找最新评论。目前,每个帖子都有嵌入式评论集合,如此
{ "_id" : ObjectId("4f84b8da6c33f31122000001"), "comments" :
[{
"uname" : "bargledoofus",
"msg" : "hello hello hello",
"_id" : ObjectId("4fe926fa811ec70100008888"),
"date" : ISODate("2012-06-26T03:05:30Z")
},
{
"uname" : "bargledoofus",
"msg" : "moar hello",
"_id" : ObjectId("4fe9272b2f1efb0100000078"),
"date" : ISODate("2012-06-26T03:06:19Z")
},
{
"uname" : "bargledoofus",
"msg" : "most hello ever",
"_id" : ObjectId("4fe92cfd7614c8010000002b"),
"date" : ISODate("2012-06-26T03:31:09Z")
},
{
"uname" : "bargledoofus",
"msg" : "i think i've got it",
"_id" : ObjectId("4fe92d04f4a35c010000000e"),
"date" : ISODate("2012-06-26T03:31:16Z")
}
]}
我如何在posts集合中查询最新评论,比某个日期时间更新的评论,或者通过comment.uname等评论属性查询?
我能以某种方式使用map reduce来实现这个目标吗?
答案 0 :(得分:0)
我不确定是否可以返回当前架构的注释。但是,您可以返回包含符合特定条件的评论的所有帖子。 MongoDB的db.find()匹配文档而不是嵌入文档。你可以做:
db.posts.find({"comments.date":{$gt:<insert date object>}})
它将返回包含所有评论的所有帖子,这些评论包含的评论大于指定的日期,但也会返回该帖子的其他评论。
您可能有以下几种选择: