2015-02-10 119 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代码和任何非空/空值的项目。

所以[874,“”]不会服从它,但[874,“某事”]会。

任何想法?

多伦。

回答

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] } 
    } 
} })