将String转换为Object(json)MongoDB shell

时间:2015-07-08 20:44:28

标签: mongodb mongodb-query aggregation-framework mongo-shell

我正在尝试执行以下命令

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查询以在查询中使用它。

1 个答案:

答案 0 :(得分:0)

为什么不将{$exists: true}部分放在功能代码中?

类似的东西:

var field = "events.concessionDetails" // function argument

var match = {
    $match: {}
}
match.$match[field] = { exists: true }

然后在调用聚合方法时使用match变量。