我有数据库的名称是“项目”和集合的名称是“样本”,然后我插入一个JSON文件使用mongoimport
命令。
现在我编辑了相同的JSON文件。因此,如果想要将相同的JSON文件导入到集合中,那么我将面临这样的问题:创建多个示例,并且没有更新。
有没有办法使用mongoimport
命令更新或覆盖mongodb中已经存在的数据?
请注意,我还尝试使用--mode=upsert
标志:
./mongoimport --db Project --collection sample --mode=upsert --file /home/rule.json
7条答案
按热度按时间stszievb1#
对于MongoDB v3.x,
eyh26e7m2#
--dropflag也可以与mongoimport命令一起使用沿着来覆盖/更新现有数据。
我给出这个解决方案是因为我尝试使用**--upsert**flag,但我看不到现有数据的任何更改,而是创建了新的示例。
np8igboo3#
默认行为是跳过已经存在的数据,所以默认情况下不会覆盖现有的数据。
但是你可以使用
--upsert
标志来更新它。cnjp1d6j4#
根据mongo文档,--mode=upsert在你的情况下不起作用的原因是默认情况下,mongoimport使用_id字段。所以正确答案应该是“掉”
--mode=upsert:
默认情况下,mongoimport使用_id字段来匹配集合中的文档和导入文件中的文档。要指定在upsert和合并模式下匹配现有文档的字段,请使用--upsertFields。
--drop:
修改导入过程,以便目标示例在从输入导入数据之前删除集合。
mongoimport document
dgtucam15#
--mode upsert
将创建一个新的记录,如果_id的不匹配。这些_id由mongodump/mongorestore在不同机器上的数据库中保存--drop
将删除整个集合!要覆盖一个或多个记录而不删除其他现有记录,请在使用
--upsert
时确保id匹配t40tm48m6#
使用MongoDb 3.6.8版,以下解决方案对我有效
其中“field name”是MongoDb用来比较的键的名称,而不是默认字段“_id”。
odopli947#
我的版本是1.40.3,现在你终于可以不用CMD了。
更新单元格上的数据,然后单击右下角的UPDATE按钮。
如果你有很多数据,它可能是隐藏的,你可能必须向下滚动才能看到它。