Используя Mongodb 3.6, мне нужно получить данные для подмассива, только если первое условие удовлетворяет для того же документа в другом массиве.
Для одной идентификации. Код, у меня есть данные разных стадийв том же документе, что и вложенные массивы.Как:
Первый документ:
{
"currentStage" : "STAGE4",
"stagesData" : [
{
"name" : "STAGE4",
"log" : {
"who" : "dummy",
"when" : "2018-10-15T06:30:50.000+0000"
}
},
{
"name" : "STAGE3",
"log" : {
"who" : "dummy",
"when" : "2018-10-12T08:48:32.000+0000"
}
},
{
"name" : "STAGE2",
"log" : {
"who" : "test",
"when" : "2018-10-11T07:12:34.000+0000"
}
},
{
"name" : "STAGE1",
"log" : {
"who" : "dummy",
"when" : "2018-10-09T09:34:54.000+0000"
}
}
],
"identification" : {
"code" : "Code2",
"Description" : "Desc2"
}}
Второй документ:
{
"currentStage" : "STAGE2",
"stagesData" : [
{
"name" : "STAGE2",
"log" : {
"who" : "dummy",
"when" : "2018-10-12T10:41:15.000+0000"
}
},
{
"name" : "STAGE1",
"log" : {
"who" : "test",
"when" : "2018-10-11T09:34:53.000+0000"
}
}
],
"identification" : {
"code" : "Code1",
"Description" : "Desc1"
}}
Теперь, в MongoDB, яНеобходимо выяснить идентификацию. Код и идентификацию. Описание записи, которая была в STAGE2 ON 2018-10-11 .Итак, согласно данным я должен получить только первый документ, но я получаю оба документа.По сути, он должен искать, находится ли запись в STAGE2, а затем применять следующий фильтр только для подмассива того же документа.Но в этом случае у нас есть оба stageData.name как STAGE2 и log.when как 2018-10-11 где-то в обоих документах, но не в одном документе.
Оператор запроса
- Фильтр документа, который был в stageData.name = "STAGE2" на stageData.log.when = "2018-10-11"
Ожидаемый результат
Текущий вывод
- Оба документа возвращаются по запросу mongodb.
Мне нужны оба фильтра для одного и того же документа.Нужна ваша помощь, чтобы достичь этого.Надеюсь, я ясно объяснил.