繁体   English   中英

在 MongoDB 聚合管道中展开变量

[英]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
}

询问

  • [keyToCheck] 是取变量的值,不是数组
  • 这里假设您还想投影 keyToCheck,而不总是投影指标
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM