Итак, мой вопрос: как я могу эффективно добавить данные из коллекции X в коллекцию Y?
Серверные инструменты mongodump и mongorestore. Вы можете экспортировать данные исходной коллекции в файлы дампа BSON и импортировать в целевую коллекцию. Эти процессы выполняются очень быстро, поскольку данные в базе данных уже находятся в формате BSON.
С помощью этих инструментов данные можно экспортировать из не сегментированной коллекции в сегментированную коллекцию. В этом случае требуется, чтобы в исходной коллекции было поле ключа осколка (или поля) со значениями. Обратите внимание, что индексы из исходной коллекции также экспортируются и импортируются (с помощью этих инструментов).
Вот пример рассматриваемого сценария:
mongodump --db=srcedb --collection=srcecoll --out="C:\mongo\dumps"
Это создает каталог дампа с именем базы данных. В нем будет файл srcecoll.bson, который используется для импорта.
mongorestore --port 26xxxx --db=trgtdb --collection=trgtcoll --dir="C:\mongo\dumps\srcecoll.bson"
Хост / порт подключается к mongos
сегментированного кластера. Обратите внимание, что имя файла bson необходимо указать в параметре --dir
.
Импорт добавляет данные и индексы в существующую сегментированную коллекцию. Процесс только вставляет данные; существующие документы не могут быть обновлены. Если значение _id
из исходной коллекции уже существует в целевой коллекции, процесс не перезапишет документы (и эти документы не будут импортированы, и это не является ошибкой).
Для mongorestore
есть несколько полезных опций, например: --noIndexRestore
и --dryRun
.
person
prasad_
schedule
07.01.2020
_id
? - person prasad_   schedule 07.01.2020