如何在mongodb中从多个集合中选择数据?

如何在mongodb中从多个集合中选择数据?,mongodb,mongodb-query,Mongodb,Mongodb Query,我已经创建了三个集合,一个用于用户详细信息,第二个用于帖子,第三个用于喜欢和评论。我想访问的职位与喜欢的计数形成另一个集合和类似的用户,如果已经。我已经设计了下面的文档,我想访问结果。最好的方法是什么,否则我的设计不好。请帮忙 发布数据 { "_id" : ObjectId("57500dfbba3dfb0cd0ec02c1"), "post" : { "fileLocation" : "uri/mediaServer/position", "ti

我已经创建了三个集合,一个用于用户详细信息,第二个用于帖子,第三个用于喜欢和评论。我想访问的职位与喜欢的计数形成另一个集合和类似的用户,如果已经。我已经设计了下面的文档,我想访问结果。最好的方法是什么,否则我的设计不好。请帮忙

发布数据

{
    "_id" : ObjectId("57500dfbba3dfb0cd0ec02c1"),
    "post" : {
        "fileLocation" : "uri/mediaServer/position",
        "timestamp" : "Jun 2, 2016 4:14:11 PM",
        "title" : "selling grocery",
        "description" : "abc def ghe",
        "userID" : "abc",
        "userIP" : "192.168.1.22",
        "category" : 2
    },
    "price" : 324.17
}
用户数据

{
    "_id" : ObjectId("57644c80a4b3681550aa6ba9"),
    "userId" : "abc",
    "userName" : "abcdef12",
    "email" : "xyz@gmail.com",
    "phone" : "78654321011",
    "password" : "12345678",
    "imageEncoded" : "gfwyegyivyggiyekwacktfuitbcliupouygfYYU",
    "profession" : "developer",
    "about" : "working at google ",
    "married" : false,
    "gender" : "m",
    "interests" : [ 
        "chess", 
        "hollowood movies", 
        "listening music"
    ],
    "skills" : [ 
        "core java", 
        "android", 
        "programing in c"
    ],
    "registrationIp" : "192.168.1.9",
    "loginAttempts" : 0,
    "address" : {
        "houseNumber" : "f12",
        "societyId" : "hr_far_sec15A_0032"
    },
    "creationDate" : ISODate("2016-06-17T19:16:16.283Z"),
    "ActiveSessionsIds" : [ 
        "id1"
    ]
}
喜欢和评论数据

{
    "_id" : ObjectId("57500dfbba3dfb0cd0ec02c1"),
    "comments" : [ 
        {
            "author" : {
                "UserId" : "abc",
                "authorName" : "abcdef12"
            },
            "comment" : "i want to buy it",
            "date" : "Jul 4, 2016 3:55:48 PM",
            "commentId" : "577a39ad670f1319986001e8"
        }
    ],
    "userId" : [ 
             "abc"
      ],
    "counter_like" : 1
    "counter_comment" : 1
}
我的查找查询是:

db.posts_collection.aggregate([

    { 
       $lookup:{
               from:"postmetadatacollection",
               localField:"_id",
               foreignField:"_id",
               as:"Data"
              }
    },
    {
       $lookup: {
                from: "user_profiles", 
                localField: "post.userID",
                foreignField: "userId",
                as: "user"
            }
    },
    {  
        $project: {
            "_id":0,
            "post.timestamp":1,
            "post.category":1,
            "post.userID":1,
            "post.description":1,
            "post.title":1,
            "CommentCount":"$Data.counter_comment",
            "LikeCount":"$Data.counter_like",
            "userName":"$user.userName",
            "price":1,
    "startDate":1,
    "endDate":1,
    "workingDays":1,
    "fees":1,
    "location":1,
    "":1,
            }
    }
如果在完整的$lookUp中,集合中的userId[]中存在一个特定的userId,则我想为每篇文章获取true/false
例如:like for userId:abc如果它喜欢或不喜欢聚合输出中的每个帖子

为什么不在帖子集合本身中嵌入评论和喜欢的数据?Hi@ankit,什么是查找查询中的“postmetadatacollection”,“user_profiles”。Hi@naidu postmetadata是帖子上喜欢和评论的集合