gpt4 book ai didi

javascript - 从 Mongoose 的多个集合中获取数据?

转载 作者:行者123 更新时间:2023-11-28 05:42:32 25 4
gpt4 key购买 nike

我有两个集合,即订单和员工。我首先使用客户 ID 从某个客户的 Orders 集合中查找所有订单,然后需要使用结果中的字段从 Employee 集合中查找数据。我面临的问题是我从 Orders 获得的结果是一个数组,因此我需要使用 for 循环对其进行迭代,然后在 for 循环内查找 Employee 数据。订单的第一部分有效,但第二部分并不总是我的数组值 0。

        async.waterfall([
function(callback) {
Order.find({ user_id: req.body.id}, {sort: { id: -1 }}, function(err, order) {
callback(null, order);
});
},
function(order, callback) {
for(var i = 0; i < order.length; i++) {
Employee.find({id: order[i].id}, 'field', function(err, employee) {
if (employee.length > 0) {
order[i].field = employee[i].field;
}
order[i].id = order[i].otherid;
regs.push(order[i]);
});
callback(null, regs);
}
}], function (err, result) {
res.send(result);
});

但是结果是这样的:[0],这不是预期的结果。我在这里做错了什么?还有其他解决办法吗??

最佳答案

您可以在 mongodb 中尝试 $lookup 。我认为对你有帮助

我有这样的订单集合

{ "_id" : 1, "item" : "abc", "price" : 12, "quantity" : 2 }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1 }
{ "_id" : 3 }

另一个集合是这样的库存

{ "_id" : 1, "sku" : "abc", description: "product 1", "instock" : 120 }
{ "_id" : 2, "sku" : "def", description: "product 2", "instock" : 80 }
{ "_id" : 3, "sku" : "ijk", description: "product 3", "instock" : 60 }
{ "_id" : 4, "sku" : "jkl", description: "product 4", "instock" : 70 }
{ "_id" : 5, "sku": null, description: "Incomplete" }
{ "_id" : 6 }

我使用聚合来查找所有订单数据,然后我需要使用订单集合字段查找库存数据

db.orders.aggregate([
{
$lookup:
{
from: "inventory", //another collection name
localField: "item", // order collection field
foreignField: "sku", // inventory collection field
as: "inventory_docs"
}
}
])

输出

{
"_id" : 1,
"item" : "abc",
"price" : 12,
"quantity" : 2,
"inventory_docs" : [
{ "_id" : 1, "sku" : "abc", description: "product 1", "instock" : 120 }
]
}
{
"_id" : 2,
"item" : "jkl",
"price" : 20,
"quantity" : 1,
"inventory_docs" : [
{ "_id" : 4, "sku" : "jkl", "description" : "product 4", "instock" : 70 }
]
}
{
"_id" : 3,
"inventory_docs" : [
{ "_id" : 5, "sku" : null, "description" : "Incomplete" },
{ "_id" : 6 }
]
}

关于javascript - 从 Mongoose 的多个集合中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com