У меня есть две коллекции users
и `groups. Давайте сделаем вид, что коллекции в настоящее время имеют следующие данные.
users
коллекция имеет следующий документ
{
"_id":"57a944390b1acf0d069388c1",
"first":"John",
"last":"Smith",
"email":"[email protected]",
"groups":[
{
"id":"57aab09c0b1acf135a6b6856",
"name":"Group A"
},
{
"id":"57aab0ed0b1acf135a6b6857",
"name":"Group B"
},
{
"id":"57b008be31a5a202ee4ff47b",
"name":"Group C"
}
]
}
groups
коллекции имеет следующие два документа
[
{
"_id":"57aab0ed0b1acf135a6b6857",
"name":"Group B",
"requests":[
{
"_id":"57b14b1831a5a2756fbc9873",
"description":"Request A",
"denied_requests":[ ]
}
]
} {
"_id":"57b008be31a5a202ee4ff47b",
"name":"Group C",
"requests":[
{
"_id":"57b14c2131a5a2756fbc9874",
"description":"Request B",
"denied_requests":[ ]
},
{
"_id":"57b14e3131a5a2756fbc9875",
"description":"Request C",
"denied_requests":[
"57a944390b1acf0d069388c1"
]
}
]
}
]
Что мне нужно сделать, это использовать трубопровод агрегации для запроса всех запросов пользователя исключая запросы, которые пользователь отказал.
Я бы предположил, что это будет состоять из следующих шагов: psudo шагов, заданных user_id
как вход в проблему.
$match
на пользователя_id
поле$project
группаid
ы от результата предыдущего шага$lookup
с использованиемid
из$project
наusers.groups
на_id
изgroups
коллекции$match
наrequests
, которые не имеют текущего идентификатора пользователя вdenied_requests
массив по запросу.
Пример ввод
Sample вход это будет 57a944390b1acf0d069388c1
, представляющие пользователями _id
Пример вывод
Пример вывод на это был бы следующий список запросов, которые пользователь не отказал.
[
{
"_id":"57b14b1831a5a2756fbc9873",
"description":"Request A",
"denied_requests":[]
},
{
"_id":"57b14c2131a5a2756fbc9874",
"description":"Request B",
"denied_requests":[ ]
}
]
Я попробовал это, и это выглядит как будто ничего не возвращается после того, как первый '$ lookup' – TheJediCowboy
Я просто понял, что БД Я собирался выполнить agaisnt <3.2, что означает, что $ lookup не поддерживается и терпит неудачу. – TheJediCowboy
https://github.com/facebook/react-native/issues/7626 Я считаю, что это охватывает. – TheJediCowboy