En un código Typesctipt, me gustaría usar un valor de variable en una canalización de agregación en MongoDB; el problema es que el campo "keyToCheck" es una variable establecida por el código Typescript y, por lo tanto, puede cambiar según muchas condiciones. ¿Hay alguna forma de expandir la variable "keyToCheck"? $$keyToCheck , $keyToCheck sin resultado (errores de compilación). Gracias.
... const pipeline = [ { $match: { [this.countryOriginFieldName!]: { $in: members }, **keyToCheck**: { $nin: dictionaryNotAbsoluteFieldList } } }, ...ACTUALIZACIÓN: intente con este ejemplo:
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 } ]); Salida deseada:
{ "indicator" : "US$millions", "value" : 1.0 } { "indicator" : "US$millions", "value" : 2.0 }Consulta
var keyToCheck = "indicator"; db.getCollection("temp_collection").aggregate([ { $match: {[keyToCheck]: "US$millions"} }, {$project: {[keyToCheck]: 1, value: 1}} ] ); Esto funcionará, la clave será solo una cadena y, en el proyecto, también será solo una cadena. No necesita $ o $$ con esta consulta.