#Коллекция Книги
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, а не про то, какую БД лучше использовать.
Тут наверно только "в лоб", первым запросом получить всех нужных авторов, вторым - получить книги по этим авторам. Так же нужно что-б были необходимые индексы.
Если операция частая, то лучше изменить структуру/сделать кеширование (например сделать books.author_country)
правильно я вас понял, вы предлагаете сохранить всех список всех авторов в переменную, а потом передать этот список find( ) ?
если так, то будет ли возрастать нелинейно зависимостью время поиска когда количество авторов возрастет от 100 до 10000 например, а количество книг от 10000 до 1000000?
Не всех, а только нужных и только идентификаторы. По сути вы правильно поняли. Если скорость выполнения будет удовлетворять, то ок. Иначе нужно переходить на 2-й вариант.
Так же есть ещё более отдаленные способы, например для этой конкретной задачи использовать *sql.