【发布时间】:2020-07-25 13:58:03
【问题描述】:
我想找出Record A 具有"FLD1" 且"FLD1" 不等于"VAL2" 的文档,这意味着它还应该返回Record A 不存在或FLD1 存在的文档不存在除了FLD1 不等于VAL2。
在下面的文档中,它应该返回文档1, 3和4
-
1:因为存在Record A,所以存在FLD1但FLD1的值不是VAL2 -
3:因为Record A不存在 -
4:因为Record A存在但FLD1不存在
只有 2 个 Record A 存在,FLD1 存在且 FLD1 的值等于 VAL2。
{
_id:NumberLong("1"),
Name:"Doc1",
Records: [
{
"RecordName" : "Record A",
"State" : 1,
"Properties" : {
"FLD1" : "VAL1"
}
},
{
"RecordName" : "Record B",
"State" : 1,
"Properties" : {
"FLD2" : "VAL3",
"FLD3" : "VAL2"
}
}
]
},
{
_id:NumberLong("2"),
Name:"Doc2",
Records: [
{
"RecordName" : "Record A",
"State" : 1,
"Properties" : {
"FLD1" : "VAL2"
"FLD4" : "VAL1"
"FLD5" : "VAL6"
}
},
{
"RecordName" : "Record C",
"State" : 1,
"Properties" : {
"FLD1" : "VAL1",
"FLD2" : "VAL3"
}
}
]
},
{
_id:NumberLong("3"),
Name:"Doc3",
Records: [
{
"RecordName" : "Record B",
"State" : 0,
"Properties" : {
"FLD2" : "VAL2"
"FLD3" : "VAL4"
"FLD4" : "VAL5"
}
},
{
"RecordName" : "Record C",
"State" : 1,
"Properties" : {
"FLD3" : "VAL2",
"FLD5" : "VAL4"
}
}
]
},
{
_id:NumberLong("4"),
Name:"Doc4",
Records: [
{
"RecordName" : "Record A",
"State" : 1,
"Properties" : {
"FLD2" : "VAL2"
}
},
{
"RecordName" : "Record C",
"State" : 1,
"Properties" : {
"FLD3" : "VAL3",
"FLD4" : "VAL4"
}
}
]
}
有人知道如何为 mongo db 编写这样的查询吗?
另外,如果我想找出所有子文档中没有记录名称为Record B的文档,我该如何找到?
在这种情况下,查询应该返回文档 2 和 4。
【问题讨论】:
标签: mongodb mongodb-query nosql mongodb-.net-driver subdocument