Существует ли «$ elemMatch» для просмотра текста в объекте (не в массиве)? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть этот объект:

My case

Я хочу установить все значения "estado" в "false"

Я пытаюсь использовать $elemMatch найти все поля и передать это как фильтр методу $set, но я думаю, что $elemMatch работает только с массивами.

1 Ответ

0 голосов
/ 14 февраля 2019

Я думаю, что вы поняли это, но, хотя у mongo нет хороших операторов для работы с вложенными объектами с произвольными ключами, у нее есть отличные операторы массива, которые позволяют (и быстро!) Обновлять и обрабатывать вложенные объекты.массив документов.Вы даже можете создавать индексы, которые работают с ключами в массивах, чтобы ускорить запросы.

В зависимости от того, насколько код вашего приложения зависит от этой структуры массива, вы можете сначала преобразовать ваши документы в массивы, а затем использовать https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/ чтобы обновить ваши документы.Чтобы преобразовать ваши документы, вы можете написать скрипт в коде приложения, написать скрипт в оболочке mongo в js или использовать конвейер агрегации с $ out для записи ваших документов в новую коллекцию.

При обновлениисхема неосуществима, я думаю, вам придется написать скрипт для изменения этих вложенных полей документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...