java mongodb upsert,使用MongoDB Java 3.0驱动程序批量Upsert

In the earlier versions of MongoDB Java drivers , to run a query and do unordered bulk upsert on the result all we had do was :

BulkWriteOperation bulk = dbCollection.initializeUnorderedBulkOperation();

bulk.find(searchQuery).upsert().update(new BasicDBObject("$set", getDbObjectModel()));

But in version 3, with the introduction of Bson Document support and MongoCollection.bulkWrite() method how can this be done?

I tried this :

List> documentList = new ArrayList<>();

collection.bulkWrite(documentList, new BulkWriteOptions().ordered(false));

but, I need the upsert functionality.

Thanks.

解决方案

You can still use all of the functionality, it's just that BulkWrites now have a different syntax:

MongoCollection collection = db.getCollection("sample");

List> updates = Arrays.>asList(

new UpdateOneModel(

new Document(), // find part

new Document("$set",1), // update part

new UpdateOptions().upsert(true) // options like upsert

)

);

BulkWriteResult bulkWriteResult = collection.bulkWrite(updates);

So you use the UpdateOneModel ( or for many if you want ) and set the UpdateOptions as the third argument to the constructor.

Takes some getting used to, but it's basically just building "Lists" with all the same syntax as elsewhere. I guess that's the main reason for the change.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值