2015-02-10 8 views
0

У меня есть документ, например, следующие:массивы Монго DB запрос

{ 
    "_id" : LUUID("8a831942-1dd6-1942-8759-c6275305d10d"), 
    "Record" : "SEK_2Y_9Y", 
    "RawDataDictionary" : [[ 1033, ""], [3355,""], [886,"45.8"],[874,"589"]], 
    "TimeStamp" : ISODate("2015-02-10T16:27:14.847Z") 
} 

«RawDataDictionary» содержит пары коды и значения.

Я хочу, чтобы все документы, содержащиеся в их «RawDataDictionary», содержали элемент с кодом 874 и любое значение, которое не равно null/Empty.

поэтому [874, ""] не повинуется ему, но [874, "что-то"] будет.

Любые идеи?

Doron.

ответ

0

Я не верю, что есть способ выразить ваше условие на вашем документе на языке запросов MongoDB (начиная с версии 2.6). Проблема в том, что нет способа выразить «любое [второе] значение, которое не является нулевым/пустым».

db.test.find({ "RawDataDictionary" : [1033, ""] }) // ok 

db.test.find({ "RawDataDictionary" : [874, { "$ne" : "" }) // nope 

Вы можете использовать $elemMatch для выполнения запроса, если изменить структуру RawDataDictionary поля:

{ 
    "Record" : "SEK_2Y_9Y", 
    "RawDataDictionary" : [ 
     { "code" : 1033, "value" : "" }, 
     { "code" : 3355, "value" : "" }, 
     { "code" : 886, "value" : "45.8" }, 
     { "code" : 874, "value" : "589" } 
    ], 
    "TimeStamp" : ISODate("2015-02-10T16:27:14.847Z") 
} 

db.test.find({ "RawDataDictionary" : { 
    "$elemMatch" : { 
     "code" : 874, 
     "value" : { "$nin" : ["", null] } 
    } 
} }) 
Смежные вопросы