繁体   English   中英

使用Java将大量的Insert和Save组合到mongodb中? 有没有办法可以实现这一目标?

[英]Combining bulk Insert and Save in mongodb using Java? Is there a way through which we can achieve it?

我非常确定INSERT在mongodb中的工作方式,但是我想通过插入来插入数据,并且如果ID已经存在,我想在mongodb中更新数据,例如SAVE。

例:

如果我在测试集中的输入是

{ "_id":ObjectId("68768242ge"), "name":"1"  } 

我知道使用保存能够将当前数据更新为

db.test.save({ "_id":ObjectId("68768242ge"), "name":"2"  }) 

但是只能使用INSERT查询来更新列表。

db.test.insert({ "_id":ObjectId("68768242ge"), "name":"2"  }) 

在这种情况下,我将得到一个错误作为重复密钥。

因此,我想同时执行这两项操作,如果对象不存在,那么我想插入它,但是如果对象键已经存在,那么我想对其进行更新。

有什么方法可以实现? 我想使用mongodb进行批量插入/更新。

您要执行的操作称为“ upsert”。

一些更新也会创建记录。 如果更新操作指定了upsert标志,并且没有与更新操作的查询部分匹配的文档,则MongoDB将把更新转换为插入。

> db.test.update({"_id" : ObjectId("529f4ddd6487ccbe70e44c75")},{"name":"orig"},{upsert: true})
> db.test.find(); { "_id" : ObjectId("529f502aef047d0c12c305d5"), "name" : "orig" }
> db.test.update({"_id" : ObjectId("529f502aef047d0c12c305d5")},{"name":"new"},{upsert: true});
> db.test.find(); { "_id" : ObjectId("529f502aef047d0c12c305d5"), "name" : "new" }

您可以查看db.collection.update()的MongoDB文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM