我对MongoDB查询和实践mongoDb查询非常陌生。我正在使用这个官方的mongoDb-包。我遵循这个文档 .I有三个数据集合。一个是袋子,一个是卖家,最后一个是衣服。我们的数据架构是当卖方发送带着他/她的信息的布袋时。我们创建了这样的卖方系列:
{ "sellerId": 1234,
"firstName": "John",
"lastName": "doe",
"fullName": "John Doe",
"email": "john@yahoo.com",
"bagId": 2224
}这是包收集
{
"sellerId": 1234
"bagId": 2224,
"source" : "fedex"
}在从准备出售的袋子中挑选布料后,我们创造了布匹收藏。
[
{
"bagId": 2224,
"brandName": "Denim",
"size": "32",
"clothId": 1244,
"color": "green",
"price": 20
},
{
"bagId": 2224,
"brandName": "Zara",
"size": "31",
"clothId": 1243,
"color": "red",
"price": 90
}
]当布从Shopify卖出去时。我们得到了SKU的数组,这是我们的布匹收藏clothId.
我的目标是,当布被出售时,我们匹配clothId(SKU-ID来自SHOPIFY)查找bagId,从bagId我们将得到卖家的信息。
我的预期结果是
{
"firstName": "John",
"lastName": "doe",
"fullName": "John Doe",
"email": "john@yahoo.com",
"bagId": 2224,
"clothId": 1244 // sold cloth id which I got from Shopify
"sellerId": 1234
}我成功地匹配了出售的布id和shopify (SKU-ID),并获得了包的信息,但我无法弄清楚,如何从bagId获得卖家的信息。
--这是我的代码--布信息和袋子的详细信息,但它并没有给我卖家的信息,只是得到了空数组
const sllerInfo = await client
.db()
.collection('clothes')
.aggregate(
[
{ $match: { clothId: { '$in': convertInto } } }, // convertInto is arrays of sold clothId which I got from Shopify
{
$lookup:
{
from: "bags",
localField: "bagId",
foreignField: "bagId",
as: "bags"
}
},
{
$lookup:
{
from: "sellers",
localField: "sellerId",
foreignField: "sellerId",
as: "sellers"
},
},
{
"$project": {
"bagId": 1.0,
"bags.source": 1.0,
"sellers.firstName": 1.0, // dont get anything
"sellers.lastName": 1.0, // dont get anything
"brand": 1.0
}
},
]
).toArray()发布于 2021-04-19 05:38:18
演示- 8HLT1T
您必须使用$unwind,您需要从bags.sellerId获得卖方id
db.clothes.aggregate([
{
$match: {
clothId: {
"$in": [
1244,
1243
]
}
}
},
{
$lookup: {
from: "bags",
localField: "bagId",
foreignField: "bagId",
as: "bags"
}
},
{
$unwind: "$bags" // break into individual documents
},
{
$lookup: {
from: "sellers",
localField: "bags.sellerId", // you need to get seller id from bags
foreignField: "sellerId",
as: "sellers"
},
},
{
$unwind: "$sellers" // break into individual documents
},
{
"$project": {
_id: 0,
"clothId": 1,
"sellerId": "$sellers.sellerId",
"bagId": 1,
"bags.source": 1,
"sellers.firstName": 1,
"sellers.lastName": 1,
"brand": 1
}
}
])您可以跳过展开,以防您知道查找中会有唯一匹配的元素。
https://stackoverflow.com/questions/67156270
复制相似问题