![](/img/trans.png)
[英]Can we achieve a dynamic array by using variable length arguments in Java?
[英]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.