Запрос MongoDB по огромным полям динамических объектов

#mongodb

Вопрос:

В настоящее время я разрабатываю серверную часть веб-приложения на узле js и базе данных MongoDB. У меня будет две следующие модели: модель пользователя с 10^9 документами и модель вопросов с 10^5 документами. Я могу ограничить свой код, задавая максимум 10^4 вопроса каждому пользователю (но я бы не хотел ограничивать). На каждый вопрос есть ответ в виде строкового массива. Каждый массив содержит не более 10 элементов. Вопросы задаются несколько раз, поэтому я часто обновляю ответы пользователей. Я хочу запрашивать пользователей на основе их ответов на один или несколько вопросов.

Мое первое решение состояло в том, чтобы иметь поле объекта у каждого пользователя и записать ответ пользователя на вопрос внутри объекта, так как ключом будет идентификатор вопроса, а значением будет строковый массив. Прежде всего, я обеспокоен тем, что размер поля объекта может быть проблемой, поскольку пользователь отвечает на все больше и больше вопросов. Более того, я не уверен, сможет ли MongoDB эффективно запрашивать эти документы. Я буду запрашивать их довольно часто; либо для подсчета документов, либо для поиска всех документов, которые совпадают, по 1000 документов за раз и т. Д. Кроме того, помогло бы мне создать индекс в поле объекта для пользовательской модели? Я не смог найти много информации об индексации и запросе полей объектов для MongoDB.

Если MongoDB не в состоянии эффективно выполнять эти типы запросов, каким будет альтернативное решение? У меня есть несколько альтернативных идей решения, но они недостаточно хороши для сложных запросов. Большое вам спасибо!