1

我想查询我的帖子集合中的所有项目以查找最新评论。目前每个帖子都有一个嵌入式评论集合,像这样

{ "_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")
    }
]}

如何查询帖子集合以获取最新评论、比某个日期时间更新的评论或评论属性(如comment.uname)?

我可以以某种方式使用 map reduce 来实现这一点吗?

4

1 回答 1

0

我不确定是否可以只返回当前模式的评论。但是您可以返回所有带有符合特定条件的评论的帖子。MongoDB 的 db.find() 匹配文档而不是嵌入文档。你可以做一个:

db.posts.find({"comments.date":{$gt:<insert date object>}})

它将返回所有评论包含大于指定日期的评论的所有帖子,但也会返回该帖子的其他评论。

您可能有几个选择:

  • 更改架构以单独存储评论
  • 查询具有与您的查询匹配的注释的所有文档并遍历查询中的相关注释
于 2012-09-19T21:25:05.910 回答