【发布时间】:2020-08-09 20:00:26
【问题描述】:
你能帮我解决我的问题吗? 我有 2 个文件:供应商和合并。 我需要使用供应商字段更新合并文档(consolidation.frs_codeclient 来自supplier.codeclient 和consolidation.frs_price 来自supplier.price),只有当consolidation.frs_code = supplier.code ANDsolidation.etb_code =supplier.customer_code。
下面是我的脚本,但它不起作用:(
exports.build = (req, res) => {
console.log("Build consolidation");
Consolidation.aggregate([
{$lookup: {
from: 'suppliers',
as: 'Supplier',
let: {
SupplierCode: '$code',
SupplierCustomerCode: '$customer_code',
SupplierCodeClient: '$codeclient',
SupplierPrice: '$price'
},
pipeline: [
{ $match:
{ $expr: {
$and: [
{ $eq: ['$frs_code', '$$SupplierCode'] },
{ $eq: ['$etb_code', '$$SupplierCustomerCode'] }
]
}}
},
{ $project: {
frs_codeclient: "$$SupplierCodeClient", frs_price: "$$SupplierPrice"
}}
]
}}
])
.then(data => {
res.send({
message: `${data.deletedCount} Consolidations were built successfully!`
});
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while building all Consolidations."
});
});
};
感谢您的帮助:)
更新
我找到了这个解决方案:
db.customers.aggregate([
{$lookup: {
from: "suppliers",
let: {
customerCode: "$code",
customerName: "$name",
customerCodePostal: "$codepostal",
customerCity: "$city",
customerPrice: "$price",
customerSupplierCode: "$supplier_code",
customerSupplierCodeClient: "$supplier_codeclient"
},
pipeline: [
{ $match:
{ $expr: {
$and: [
{ $eq: ["$customer_code", "$$customerCode"] },
{ $eq: ["$code", "$$customerSupplierCode"] }
]
}}
},
{ $project: {
_id: 0,
"supplierCode": "$code",
"supplierName": "$name",
"supplierCodeClient": "$codeclient",
"supplierCustomerCode": "$customer_code",
"supplierPrice": "$price",
"customerCode": "$$customerCode",
"customerName": "$$customerName",
"customerCodePostal": "$$customerCodePostal",
"customerCity": "$$customerCity",
"customerPrice": "$$customerPrice",
"customerSupplierCode": "$$customerSupplierCode",
"customerSupplierCodeClient": "$$customerSupplierCodeClient"
}}
],
as: "supplier"
}},
{ $project: {
_id: 0,
"price": 1,
"supplierCode": "$supplier.supplierCode",
"supplierName": "$supplier.supplierName"
}}
])
【问题讨论】:
-
我更新了我的帖子,因为我找到了解决方案。我在原始帖子中添加了它。谢谢。
-
您可以将解决方案作为答案而不是问题的一部分发布吗?
标签: node.js mongodb typescript mongoose