Как в Mongodb сделать выборку строк по значениям строк связанной коллекции?

MongoDB:

#Коллекция Авторы
db.authors.insert({name: 'Chehov', birthday: '1860', country: 'ru'})
db.authors.insert({name: 'Sartr', birthday: '1905', country: 'fr'})
db.authors.insert({name: 'Braun', birthday: '1913', country: 'us'}
...

#Коллекция Книги
db.books.insert({title: 'book1', author: 'Chehov', year :''})
db.books.insert({title: 'book2', author: 'Sartr', year :''})
db.books.insert({title: 'book3', author: 'Frauthor', year :''})
...

Предположим, что коллекция Авторы расширятся полями. То есть будут добавляться новые поля - теги какие-то, например. Это значит, что вариант с обновлением структуры коллекции Книги не подходит.

Как правильно (производительно) выбрать все книги, у которых поле country == 'fr', например?

Вопрос про MongoDB, а не про то, какую БД лучше использовать.
  • Вопрос задан
  • 2647 просмотров
Решения вопроса 1
@lega
Тут наверно только "в лоб", первым запросом получить всех нужных авторов, вторым - получить книги по этим авторам. Так же нужно что-б были необходимые индексы.
Если операция частая, то лучше изменить структуру/сделать кеширование (например сделать books.author_country)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы