【发布时间】:2020-05-22 15:06:30
【问题描述】:
为什么我必须使用此代码:{ $match: { $expr: { <aggregation expression> } } } 来匹配使用文档输入变量的文档而不是:{ $match: { <query> } }?
例如:
$lookup: {
from: "comments",
let: { myvar: '$myInputDocVariable'},
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: [ "$varFromCommentDocument", "$$myvar" ] },
]
}
}
},
],
as: "returnedValue"
}
上面的查询工作正常,但下面的查询没有按预期工作。为什么是这样?这是否意味着如果您在$lookup 管道中使用输入变量,您必须使用$expr?这是为什么呢?
$lookup: {
from: "comments",
let: { myvar: '$myInputDocVariable'},
pipeline: [
{ $match: { "$varFromCommentDocument", "$$myvar" } }
],
as: "returnedValue"
}
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework