Сопоставить два условия из разных поднаборов одних и тех же документов (Json Record) в Mongodb - PullRequest
0 голосов
/ 18 октября 2018

Используя 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.

Мне нужны оба фильтра для одного и того же документа.Нужна ваша помощь, чтобы достичь этого.Надеюсь, я ясно объяснил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...