我对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"
}
答案 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 。