Фильтрация встроенных документов в MongoDB

Я испытываю затруднения при схватывании, как отфильтровать встроенные документы в MongoDB и начинаю думать, что я должен использовать реляционную ассоциацию, но это чувствует себя неправильным в контексте хранилища документа.

Придерживаясь типичной системы блога/комментария, у меня есть набор blogs, и каждый blog имеет многих comments. Комментарии хранятся как встроенные документы в документе блога.

Очень просто отфильтровать мой blogs набор, но для фильтрации моего comments встроенный в каждого blog, Я должен загрузить их всех в память (получите все в массив Ruby), и цикл через каждый комментарий, возвращая, которые соответствуют определенным критериям.

Мои усилия отфильтровать встроенные документы с помощью записи через точку перестали работать и возвращают все sub документы.

Существует ли лучший способ заставить MongoDB фильтровать их для меня, или я должен подчиниться реляционным ассоциациям? (Оттягивающий все встроенные документы и вручную фильтрацию будет слишком интенсивным в конечном счете),

28
задан Community 22 September 2017 в 18:01
поделиться

1 ответ

В настоящее время нет способа фильтрации На встроенных документах в том, как вы описываете. Использование точки DOT позволяет совпадать на встроенном документе, но весь документ, родитель и все, все еще будут возвращены. Также возможно выбрать, какие поля будут возвращены, но это тоже не помогает вашему делу.

У нас есть случай «виртуальных коллекций», который будет реализовать желаемую функциональность; Не стесняйтесь голосовать на нем:

http://jira.mongodb.org/browse/server-142

Между тем, вы, вероятно, должны лечить комментарии как их собственную коллекцию. В целом, если вам нужно работать с заданным набором данных, сделайте его коллекцией. Если он лучше задуматься как часть другого набора, лучше встроить.

22
ответ дан 28 November 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: