Запрос MongoDB внутри вложенных объектов - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь запросить свой документ, который выглядит следующим образом

"approvals" : {
    "REV" : "",
    "SS" : "",
    "ABC" : {
        "status" : "Sent for approval",
        "approved_at" : "",
        "approved_by" : "",
    },
    "XYZ" : {
        "status" : "Approved",
        "approved_by" : "xxx@abc.com",
        "approved_at" : ISODate("2020-01-06T09:48:22.777Z"),
    },....
}

Объект Approval может иметь несколько вложенных документов, таких как AB C, XYZ ... et c. запросить, есть ли у этого «одобрения» какой-либо вложенный документ, чье "status" не находится в APPROVED состоянии

1 Ответ

1 голос
/ 06 января 2020

Вам нужно запустить $ objectToArray для сканирования ваших динамических c ключей. Затем вам нужно $ anyElementTrue с $ map , чтобы проверить, есть ли какое-либо значение Approved:

db.collection.find(
    { 
        $expr: { 
            $anyElementTrue: { 
                $map: { 
                    input: { $objectToArray: "$approvals" },
                    in: { $ne: [ "$$this.v.status", "Approved" ] } 
                }
            } 
        }
})

Пн go Детская площадка

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