【发布时间】:2021-01-09 17:42:49
【问题描述】:
我有两个集合user和transaction,交易有两个字段customer和seller,用户有两个字段name和email.,用户集合包含客户和卖家的数据
我希望输出好像传递的email 属于customer 然后seller 详细信息应该来自查找,如果传递的email 属于seller 那么customer 详细信息应该来自查找
我所做的是,我正在动态传递值email,email 值可以属于customer 或seller,如果email 匹配seller,那么我想要localfield查找为customer,反之亦然。以下是我尝试过的。
const email = req.email;
transaction.aggregate([{
$match: {
$or: [{
customer: email,
},
{
seller: email,
},
],
},
},
{
$lookup: {
from: "user",
localField: {
$cond: [{
if: {
$eq: ["$customer", email]
},
then: "seller",
else: "customer",
}],
},
foreignField: "email",
as: "user",
},
},
{
$unwind: "$user"
},
]);
但是对于上面的查询错误如下
$lookup argument 'localField' must be a string
我正在使用 nodejs、express 和 mongoose。
【问题讨论】:
标签: mongodb mongoose aggregation-framework