Mongodb 如何使用查找在mongo中连接两个集合

Mongodb 如何使用查找在mongo中连接两个集合,mongodb,mongoose,Mongodb,Mongoose,我收集了订单和用户。我需要使用mongo查询过滤订单集合 [ { _id:1, order:[ { orderId:2, shopId:8 } ] } ] [ { _id:1, shop:[ { shopId:9 }, { shopId:3 } ] } { _id:2, sh

我收集了订单用户。我需要使用mongo查询过滤订单集合

[
 {
  _id:1,
  order:[
   {
     orderId:2,
     shopId:8
   }
  ]
 }
]
 [ {
      _id:1,
      shop:[
       {
         shopId:9
       },
       {
         shopId:3
       }
      ]
     }
     {
      _id:2,
      shop:[
       {
         shopId:8
       },
       {
         shopId:4
       }
      ]
     }
    ]
订单的收集如下所示

[
 {
  _id:1,
  order:[
   {
     orderId:2,
     shopId:8
   }
  ]
 }
]
 [ {
      _id:1,
      shop:[
       {
         shopId:9
       },
       {
         shopId:3
       }
      ]
     }
     {
      _id:2,
      shop:[
       {
         shopId:8
       },
       {
         shopId:4
       }
      ]
     }
    ]
我只有一个1的用户id,我需要根据orderId为且2的对象的用户数组查询订单并过滤项目,它应该有shopId8,并且应该只返回项目中shopId为6的店铺

预计产量会是这样的,

[
      {
          _id:2,
          shop:[
           {
             shopId:8
           }
          ]
      }
]
你可以试试这个

db.getCollection('orders').aggregate([
    {$lookup:
        {
         from: "users",
         localField: "_id",
         foreignField: "order.orderId" ,
         as: "users"
        }
    }
    ,{$unwind : "$users" }
    ,{$project : 
        { "_id": "$_id",
          "shop": {
            $filter: {
                input: "$shop",
                as: "s",
                cond: {$in: ["$$s.shopId", "$users.order.shopId"]} } }
        }}
 ] )
结果:

{
    "_id" : 2.0,
    "shop" : [ 
        {
            "shopId" : 8.0
        }
    ]
}

请按照您的意愿发布示例输出JSON。请检查,我添加了@MayuriSKulkarniOkay,您是如何尝试的?我是通过使用javascript过滤器来做的,我们有没有办法在mongo queryShopId中实现这一点?在我的情况下,我需要匹配我们在用户集合中的数据Orry,我忘记更改静态值:)答案已修复。我还有一些其他字段,我需要改为查询订单表