Я пытаюсь выполнить следующую командупреобразовать строку в объект (JSON) MongoDB оболочки
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 запроса использовать его в запросе.
Первая строка не будет работать, потому что вы конвертируете ее в строковый литерал вместо примитива JS (aka Object), попробуйте что-то вроде (без тестирования этого одного бита) 'var field = {" "+ field +" " : {$ exists: true}} ' – Sammaye
@Sammaye: escape-символ \ в Javascript, мы попробовали его, и мы попробовали ваш, а также его работу. –
Итак, он работает сейчас? – Sammaye