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