我该怎么做这个mongodb查询?搜索收集的孩子

时间:2012-08-30 07:56:24

标签: mongodb

我对MongoDB(以及mongoDB查询)很新,所以我对如何编写查询执行以下操作有疑问......

使用类似我在下面说明的模式...如何仅返回特定用户的所有帖子评论的集合?我需要这样做,例如为自己的个人资料页面生成用户评论列表。但是,我打算将评论作为职位的子女而不是用户的子女。我假设我不需要保留多余的评论记录,并且这种查询可能以某种方式(可能很简单,但我是新手)。

{ title: "someTitle",
  author: "someAuthor",
  created: Date,
  comments: [{authorId: objectId, content: "commentContent"},{authorId: objectId, content: "commentContent"}],
  postContent: "This is the content of the post"
}

2 个答案:

答案 0 :(得分:3)

对于这种情况,最好将评论分开收集:

comments
{
  authorid,
  postId,
  content
}

然后您可以轻松查询用户评论:

db.comments.find({authorid: 5});

您的架构不适用于您的业务,或者会给您带来某种痛苦。

答案 1 :(得分:1)

这个模式这个模式不是最好的解决方案,我会单独收集评论或存储评论两次。但是使用Mongo DB 2.2,您可以使用以下聚合查询来执行此操作:

db.articles.aggregate(
    {$unwind : '$comments'}, 
    {$match : {'comments.authodId' : 'authodId'}},
    {$project : {comments : 1}});

请同时查看documentation