Mongodb 如何使用查找在mongo中连接两个集合
我收集了订单和用户。我需要使用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
[
{
_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的对象的用户数组查询订单并过滤项目,它应该有shopId为8,并且应该只返回项目中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,我忘记更改静态值:)答案已修复。我还有一些其他字段,我需要改为查询订单表