[英]Expand a variable in a MongoDB aggregation pipeline
在 Typesctipt 代码中,我想在 MongoDB 的聚合管道中使用变量值; 问题在于“keyToCheck”字段是一个由 Typescript 代码设置的变量,因此可以根据许多条件进行更改。 有没有办法扩展变量“keyToCheck”? 我试过$$keyToCheck
, $keyToCheck
没有结果(编译错误)。 谢谢。
...
const pipeline = [
{
$match: {
[this.countryOriginFieldName!]: {
$in: members
},
**keyToCheck**: {
$nin: dictionaryNotAbsoluteFieldList
}
}
},
...
更新:试试这个例子:
var keyToCheck = "indicator";
var queryMatch = {"`$${keyToCheck}`": "US$millions"}
printjson(queryMatch);
db.getCollection("temp_collection").aggregate([
{
$match: queryMatch
},
{$project: {indicator: 1, value: 1}}
]
);
db.getCollection("temp_collection").insertMany([
{
"indicator" : "US$millions",
"value" : 1.0
},
{
"indicator" : "US$millions",
"value" : 2.0
},
{
"indicator" : "EUROmillions",
"value" : 3
}
]);
期望的输出:
{
"indicator" : "US$millions",
"value" : 1.0
}
{
"indicator" : "US$millions",
"value" : 2.0
}
询问
var keyToCheck = "indicator";
db.getCollection("temp_collection").aggregate([
{
$match: {[keyToCheck]: "US$millions"}
},
{$project: {[keyToCheck]: 1, value: 1}}
]
);
这将起作用,键将只是一个字符串,在项目中也只是一个字符串。 此查询不需要$
或$$
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.