Обновление файла Mongoimport json или перезапись.?

У меня есть БД, которое называется "Проект" и коллекция, которое является "образцом", после чего я вставил один файл JSON с помощью команды mongoimport.

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

Есть ли способ обновить или перезаписать данные, уже присутствующие в mongodb, используя команду mongoimport?

Обратите внимание, что я также попытался использовать флаг --mode=upsert:

./mongoimport --db Project --collection sample --mode=upsert --file   /home/rule.json

Ответ 1

Для MongoDB v3.x,

--mode=upsert

Ответ 2

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

Но вы можете обновить его, используя флаг --upsert.

Ответ 3

Флаг

- drop также может использоваться вместе с командой mongoimport для перезаписывания/обновления существующих данных.

--drop


./mongoimport --db Project --collection sample --drop --file   /home/UCSC_rule.json

Я дал это решение, потому что я попытался использовать флаг - upsert, но я не мог видеть никаких изменений в существующих данных, вместо этого был создан новый экземпляр.

Ответ 4

Исходя из документа mongo, причина --mode = upsert не работает в вашем случае по умолчанию, mongoimport использует поле _id. Поэтому --drop должен быть правильным ответом.

--mode = upsert:

По умолчанию mongoimport использует поле _id для сопоставления документов в коллекции с документами в файле импорта. Чтобы указать поля, с которыми нужно сопоставлять существующие документы для режимов upsert и merge, используйте --upsertFields.

--drop:

Изменяет процесс импорта, чтобы целевой экземпляр отбрасывал коллекцию перед импортом данных из входных данных.

монгоимпорт документ