【问题标题】:insert each object in the list, update it if it exists already在列表中插入每个对象,如果它已经存在则更新它
【发布时间】:2015-05-09 01:51:14
【问题描述】:

我仍然有插入/更新多个项目的问题。问题是我有一个包含 N 个项目的列表,我想插入每个(项目)。但是,如果已经存在具有相同唯一键的项目,我想更新它。 (一个项目包含一个唯一的密钥。)所以基本上我想使用一次往返来更新每个单独的项目。

当然,我可以逐项执行此操作,但我希望我可以批量执行此操作,因此我不需要 N 次往返。

有没有办法做到这一点(Java)?

【问题讨论】:

标签: mongodb upsert multiple-insert


【解决方案1】:

这是有效的:

public static BulkWriteResult upsertAll(MongoCollection<Document> coll, List<Document> docs, String keyTag) {
    List<UpdateOneModel<Document>> requests = new ArrayList<UpdateOneModel<Document>>();
    UpdateOptions opt = new UpdateOptions().upsert(true);
    for (Document doc : docs ) {
        BasicDBObject filter = new BasicDBObject(keyTag, doc.get(keyTag)); 
        BasicDBObject action = new BasicDBObject("$set", doc);
        requests.add(new UpdateOneModel<Document>(filter, action, opt));
    }
    return coll.bulkWrite(requests);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多