如何重用创建到管道阶段的字段?

时间:2018-03-11 22:54:11

标签: mongodb aggregation-framework

我使用MongoDb的聚合框架进行复杂搜索。 关于上下文,称为配置文件的中心结构引用了许多子结构(例如,用户,位置等)。关于搜索,我将重用在stage $ lookup的条目'as'中声明的字段。但是,我不知道那是怎么回事。 有一个例子:

db.profiles.aggregate([{$lookup: {
    from: "users",
    'let': { userId: "$userId" },
    pipeline: [{
        $match: {
            $expr: {$and: [
                {$gte:["$_age",40]},
                {$lte:["$_age",50]},
                {$eq: ["$_id", "$$userId"]}
            ]}
        }
    }],
    as: "user"}},
    { $redact: {
        $cond: {
           if: { $eq: [ { $size: "$$user" }, 1 ] },
           then: "$$DESCEND",
           else: "$$PRUNE"
         }
       }}]);

我收到以下错误消息:

"ok" : 0,
"errmsg" : "Use of undefined variable: user",
"code" : 17276,
"codeName" : "Location17276"

"errmsg" : "The argument to $size must be an array, but was of type: missing",

所以,先谢谢你的帮助。

0 个答案:

没有答案