Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose聚合$lookup如何更改;从「;取决于条件的字段_Javascript_Mongodb_Mongoose_Lookup_Aggregation - Fatal编程技术网

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
阶段后的结果合并到一个数组中。

需要详细信息或清晰性