【发布时间】:2017-06-23 19:04:29
【问题描述】:
我已经阅读了有关在 mongo 聚合中使用 $let 的信息。但是所有的例子都只在$project 阶段使用$let。我想知道是否可以在 $match 聚合阶段使用 $let ?这是一个简单的例子:
var Color = "Black";
db.mydata.aggregate([
{ "$match": {
"Category": "MyCategory",
"Location":"London",
"Color": $let: {
vars: {
"Color": Color
},
in: {
"$$Color"
}
}
}},
// other stages as group, project and sort
...
])
以上抱怨Expected expression... 那么是否有可能以某种方式在$match 或聚合的其他阶段使用$let?
EDIT:
这也不行:
var Color = "Black";
db.mydata.aggregate([
{ "$match": {
"Category": "MyCategory",
"Location":"London",
"Color": "$$Color"
}},
// other stages as group, project and sort
...
])
但是按照https://docs.mongodb.com/v3.2/reference/aggregation-variables/应该呢? 最好的问候
【问题讨论】:
-
目的是什么?
-
@hyades 使用聚合之外的用户定义变量动态创建聚合查询。
-
可以像这里一样可以
"Color": Color具体目的是什么? -
@hyades 对不起,不太明白你的意思。我的意思是,如果我有一个用户在网站的输入框中单击颜色,则用户可以将颜色更改为另一种颜色,并且将对 mongo 进行新的聚合查询。所以颜色变量需要是动态的,而不是静态的。
-
@hyades 请同时查看编辑。
标签: mongodb aggregation-framework