为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB一次查询多个集合

MongoDB一次查询多个集合

慕沐林林 2019-11-28 10:50:53
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不是关系数据库,因此无法执行联接操作。有什么解决方案?
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

这是您的问题的答案。


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"}

    }}

])


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 3560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信