我有一份如下文件:
{
"_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,“某事”]会。>
有什么想法吗?
多伦。
答案 0 :(得分:0)
我不相信有一种方法可以用MongoDB查询语言表达您的文档条件(从2.6开始)。问题是没有办法表达“任何[第二个]非空/空值”的条件。
db.test.find({ "RawDataDictionary" : [1033, ""] }) // ok
db.test.find({ "RawDataDictionary" : [874, { "$ne" : "" }) // nope
如果您修改RawDataDictionary
字段的结构,则可以使用$elemMatch
执行查询:
{
"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] }
}
} })