Я хочу найти документ, где 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"
}
}
]
}
Кто-нибудь знает, как написать такой запрос для mon go db?
Кроме того, если я хочу узнать все документы, где ни один из вложенных документов не имеет имя записи со значением Record B
, как я узнаю?
В этом случае запрос должен вернуть документы 2 и 4.