【发布时间】:2015-07-08 20:44:28
【问题描述】:
我正在尝试执行以下命令
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(字段) 评估(字段)
有什么方法可以将输入字符串转换为 json 查询以在查询中使用它。
【问题讨论】:
-
第一行不起作用,因为您将其转换为字符串文字而不是 JS 原语(a.k.a 对象),尝试类似(无需测试这一点)
var field = {""+field+"": {$exists: true}} -
@Sammaye:转义字符是 Javascript 中的 \,我们试过了,我们也试过你的,它的工作原理。
-
那么它现在可以工作了吗?
标签: mongodb mongodb-query aggregation-framework mongo-shell