Я знаю теорию MongoDB и тот факт, что это не поддерживает объединения, и что я должен использовать встроенные документы или денормализовать как можно больше, но здесь идет:
У меня есть несколько документов, например:
- Пользователи, которые внедряют Suburbs, но также имеют: имя, фамилию
- Пригороды, в которые вставляются государства
- Ребенок, который вставляет School, принадлежит Пользователю, но также имеет: имя, фамилию
Пример:
Users:
{ _id: 1, first_name: 'Bill', last_name: 'Gates', suburb: 1 }
{ _id: 2, first_name: 'Steve', last_name: 'Jobs', suburb: 3 }
Suburb:
{ _id: 1, name: 'Suburb A', state: 1 }
{ _id: 2, name: 'Suburb B', state: 1 }
{ _id: 3, name: 'Suburb C', state: 3 }
State:
{ _id: 1, name: 'LA' }
{ _id: 3, name: 'NY' }
Child:
{ _id: 1, _user_id: 1, first_name: 'Little Billy', last_name: 'Gates' }
{ _id: 2, _user_id: 2, first_name: 'Little Stevie', last_name: 'Jobs' }
Поиск, который мне нужно реализовать, включен:
- имя, фамилия пользователей и ребенка
- Состояние пользователей
Я знаю, что мне нужно сделать несколько запросов, чтобы это сделать, но как это можно добиться? С mapReduce или агрегатом?
Можете ли вы указать решение?
Я попытался использовать mapReduce, но у меня не было документов от пользователей, которые содержали state_id, поэтому я его здесь привел.