如何执行mongodb查询?通过收集的子对象进行搜索

如何执行mongodb查询?通过收集的子对象进行搜索,mongodb,Mongodb,我对MongoDB(和MongoDB查询)是新手,因此我有一个问题,我将如何编写一个查询来执行以下操作 使用我下面演示的模式。。。如何返回仅由特定用户提供的所有帖子评论的集合?例如,我需要它来为自己的个人资料页面生成一个用户评论列表。然而,我的意图是将评论作为帖子的子对象,而不是用户的子对象。我假设我不需要保留多余的注释记录,并且这个查询在某种程度上是可能的(可能很简单,但我是个新手) 对于这种情况,最好将注释单独收集: comments { authorid, postId, co

我对MongoDB(和MongoDB查询)是新手,因此我有一个问题,我将如何编写一个查询来执行以下操作

使用我下面演示的模式。。。如何返回仅由特定用户提供的所有帖子评论的集合?例如,我需要它来为自己的个人资料页面生成一个用户评论列表。然而,我的意图是将评论作为帖子的子对象,而不是用户的子对象。我假设我不需要保留多余的注释记录,并且这个查询在某种程度上是可能的(可能很简单,但我是个新手)


对于这种情况,最好将注释单独收集:

comments
{
  authorid,
  postId,
  content
}
然后,您可以轻松查询用户评论:

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

您的模式不适用于您的业务,或者会给您带来某种痛苦

此模式此模式不是最佳解决方案,我将使用单独的注释集合或存储注释两次。但是,使用Mongo DB 2.2,您可以通过以下聚合查询来实现:

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

请同时检查。

是否要列出作者相同或作者相同的评论?
db.articles.aggregate(
    {$unwind : '$comments'}, 
    {$match : {'comments.authodId' : 'authodId'}},
    {$project : {comments : 1}});