MongoDB - Обновление вложенных документов с использованием JavaScript - PullRequest
0 голосов
/ 28 сентября 2018

Документы в моей коллекции apps содержат подколлекцию пользователей.Теперь мне нужно обновить одного пользователя для каждого приложения, учитывая набор _id s для коллекции apps, используя javascript.Для этого я не могу использовать обычный вызов update(), поскольку вставленные данные будут зашифрованы с использованием открытого ключа, хранящегося в документе приложения.Поэтому данные, записанные в пользовательский поддокумент, зависят от документа приложения, в котором они содержатся. Псевдокод того, что мне нужно сделать:

foreach app in apps:
    app.users.$.encryptedData = encrypt(data, app.publicKey)

Один из способов сделать это - найти всеприложения, а затем используйте forEach() для обновления каждого приложения.Тем не менее, это кажется мне неэффективным, так как все документы приложения должны были бы быть найдены дважды в базе данных, один раз, чтобы собрать их все, а затем в другой раз, чтобы обновить каждый отдельный документ.Должен быть более эффективный способ.

1 Ответ

0 голосов
/ 28 сентября 2018

Короткий ответ: нет, вы не можете обновить документ в mongoDB значением из этого документа.

Посмотрите на https://stackoverflow.com/a/37280419/5293110 для других идей, которые вы выполняете итерацию самостоятельно.

...