如何在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是帖子上喜欢和评论的集合