Javascript Mongoose聚合$lookup如何更改;从「;取决于条件的字段
我想根据文档中的变量使用不同的表进行联接 注意我在用猫鼬Javascript Mongoose聚合$lookup如何更改;从「;取决于条件的字段,javascript,mongodb,mongoose,lookup,aggregation,Javascript,Mongodb,Mongoose,Lookup,Aggregation,我想根据文档中的变量使用不同的表进行联接 注意我在用猫鼬 $lookup: { from: { if: { $eq: [ "$ownerType", 2 ] }, then: 'hi', else: 'hello' }, localField: "ownerID", foreignField: "_id", as: "members" } 不能,因为from字段不
$lookup: {
from: {
if: { $eq: [ "$ownerType", 2 ] },
then: 'hi',
else: 'hello'
},
localField: "ownerID",
foreignField: "_id",
as: "members"
}
不能,因为
from
字段不能是变量
这项功能有一个开放的门票,你可以遵循,但它已经开放了4年多,所以显然它不是最优先考虑的
我建议您在以下情况下使用:
db.collection.aggregate([
{
$facet: {
cond1: [
{
$match: {
$expr: {$ne: ["$ownerType", 2]}
}
},
{
$lookup: {
from: "hello",
localField: "ownerID",
foreignField: "_id",
as: "members"
}
}
],
cond2: [
{
$match: {
$expr: {$eq: ["$ownerType", 2]}
}
},
{
$lookup: {
from: "hi",
localField: "ownerID",
foreignField: "_id",
as: "members"
}
}
],
}
}
]);
$match
条件使此查询的效率接近单个$lookup
,您可以将$facet
阶段后的结果合并到一个数组中。需要详细信息或清晰性