Как организовать поиск вложенных документов в Mongoose?

Здравствуйте.
Учусь использовать nodejs, mongoDB, mongoose, пока - исключительно в целях расширения кругозора.
Решил опробовать вложенные документы и столкнулся с проблемой.

Существует объект пользователя, в котором есть множество статичных полей, методов и поле data, представляющее собой массив из вложенных документов. В массиве data планируется хранить вообще всю информацию о пользовательских действиях - просмотры страниц, ссылки на загруженные файлы, комментарии, сообщения и т.д. В общем - поле data будет состоять из тысяч, десятков тысяч документов для каждого документа пользователя.
Возникает вопрос: каким образом отобрать из поля data для конкретного пользователя необходимые документы (например все документы, у которых поле 'type': 'message')?

Из отсутствия в мануалах mongoose нормального описания поиска по вложенным документам (за исключением поиска по id) у меня сложилось мнение, вложенные документы сделаны вовсе не для такого использования. Подскажите, предложенный выше способ действительно неэффективен?

И в случае если это неэффективно, мне потребуется для каждого пользователя создать коллекцию, содержащую нынешний объект data. Подскажите, как это сделать средствами mongoose?
  • Вопрос задан
  • 3482 просмотра
Решения вопроса 1
@Haunted
Для вложенных документов работает dot notation, db.base.find({ date.type : "someType" }).
Для поиска по вложенным массивам есть оператор $elemMatch (docs.mongodb.org/manual/reference/operator/query/e...

И разумеется это все можно вкладывать друг в друга и комбинировать для получения желаемого результата.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект