@hunk3r

Как сделать запрос в результатах запроса MongoDB?

Привет.
Много чего прочитал, но понимания как не было, так и нет. А запрос очень популярный.
Шаг1: Получаю список guid'ов всех организаций с указанными условиями
db.organizations.find({
    docStatus: {
        $ne: "delete"
    },
    isAuthorized: true
}, {
    _id: 0,
    guid: 1
})


Шаг2: Ищу пользователей, у которых в поле org совпадение с guid'ами предыдущего запроса, и статус active:true
db.users.find({
org:"guid_из_шаг1", active:true
})


Как решить эту задачу одним простым запросом?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@hunk3r Автор вопроса
db.users.aggregate({$match: {active:true}},
{$lookup:
{ from: "org", localField: "org.id", foreignField: "guid", as: "org"},
{$unwind: "$org"},
{$match: {"org.docStatus": {$ne: "delete"}, "org.isAuthorized": true},
{$group: { _id: "$_id"}})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347
Crazy on performance...
https://docs.mongodb.com/manual/reference/operator...
https://docs.mongodb.com/manual/reference/operator...
https://docs.mongodb.com/manual/reference/operator...

А вообще, монга для такого не предназначена... БД нужно под задачу выбирать, а не следуя моде...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы