#mongodb #nosql
#mongodb #nosql
Вопрос:
В Mongo у меня есть коллекция сообщений, и в каждом сообщении есть комментарии, которые вставляются с идентификатором пользователя, именем пользователя и электронной почтой пользователя.
- post
- comments
- user_id name email
Мне было интересно, как я могу обновить все электронные письма, которые связаны с определенным идентификатором?
Комментарии:
1. пока вы можете проголосовать за этот JIRA: jira.mongodb.org/browse/SERVER-1243
Ответ №1:
В настоящее время вам придется сначала извлекать комментарии, а затем обновлять электронные письма.
В зависимости от того, какой клиент вы используете, вот mongoid
пример:
comments = post.comments
comments.update_attributes(:email => "a@b.c")
Также уже существует «Использовать позиционный оператор для обновления всех элементов в массиве» JIRA, который после реализации позволит вам сделать это одним выстрелом.
Комментарии:
1. эта функция еще не запланирована;(
Ответ №2:
Вы пробовали использовать позиционный оператор $, это единственный способ обновить соответствующие вспомогательные документы (embedded docs) docs.
Комментарии:
1. это не сработает в случае, если в коллекции комментариев будет более одного пользователя с одинаковым email. Он обновит первый элемент, соответствующий позиции.