MongoDB一次查询多个集合

users

{

 "_id":"12345",

 "admin":1

},

{

 "_id":"123456789",

 "admin":0

}


posts

{

 "content":"Some content",

 "owner_id":"12345",

 "via":"facebook"

},

{

 "content":"Some other content",

 "owner_id":"123456789",

 "via":"facebook"

}

这是我的mongodb的示例。我想获取所有具有“ via”属性等于“ facebook”并由管理员(“ admin”:1)发布的帖子。我不知道如何获取此查询。由于mongodb不是关系数据库,因此无法执行联接操作。有什么解决方案?


慕沐林林
浏览 3485回答 3
3回答

炎炎设计

这是您的问题的答案。db.getCollection('users').aggregate([    {$match : {admin : 1}},    {$lookup: {from: "posts",localField: "_id",foreignField: "owner_id",as: "posts"}},    {$project : {            posts : { $filter : {input : "$posts"  , as : "post", cond : { $eq : ['$$post.via' , 'facebook'] } } },            admin : 1        }}])或者,您可以使用mongodb group选项。db.getCollection('users').aggregate([    {$match : {admin : 1}},    {$lookup: {from: "posts",localField: "_id",foreignField: "owner_id",as: "posts"}},    {$unwind : "$posts"},    {$match : {"posts.via":"facebook"}},    { $group : {            _id : "$_id",            posts : {$push : "$posts"}    }}])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB