我正在尝试执行以下命令
function(field) {
//field = '{"'+field+'":{$exists:true}}'; Not working
//field = tojson(field) Not working
//field = {"events.concessionDetails":{$exists:true}}; Works if passed as input param
print(field);
var cur = db.cssCases.aggregate([
{$match:{"events.eventType" : {$nin:["FAIL_SYSTEM_SERVICE_CALL"]}}},
{ $unwind: "$events" },
{$match:field},
{$group:{_id:{eventType:"$events.eventType"}}},
{ $limit : 100 }
])
}
如果我为该字段传递以下值,则可以正常工作。
var field1 = {"events.concessionDetails":{$exists:true}};
但是我不想传递'{$exists:true}'
并且只想传递events.concessionDetails
并形成完整的命令,下面是我想要执行的一些代码来完成这项任务。
我尝试了以下但没有成功,
的toJSON(场) tojsonObject(场) EVAL(场)
我们可以使用任何方法将输入字符串转换为json查询以在查询中使用它。
答案 0 :(得分:0)
为什么不将{$exists: true}
部分放在功能代码中?
类似的东西:
var field = "events.concessionDetails" // function argument
var match = {
$match: {}
}
match.$match[field] = { exists: true }
然后在调用聚合方法时使用match
变量。