Java - Insert/Update 与 MongoDB 集合 bulkWrite
Java - Insert/Update with MongoDB collection bulkWrite
我对 MongoDB 很陌生。试图了解在 MongoDB 中执行批量写入的最佳选项。我想定期刷新我的 Application 集合。文档的键是 AppID、AppName 和 AppStatus。
以下是我想在每个 运行 -
中执行的操作
- 在应用程序集合中找到 AppID。
- 如果不存在,执行插入
- 如果存在,只更新 AppStatus 键的值。
List<Application> applist = getAppList(); // List contains All the Application
private final MongoClient mongoClient;
private final MongoTemplate mongoTemplate;
MongoCollection<Document> collection =
mongoTemplate.getDb().getCollection("Application");
collection.bulkWrite (????);
如何遍历 appList 并执行批量 insert/update?
您可以使用 org.springframework.data.mongodb.core.BulkOperations
执行批量 update/insert/upsert/delete 操作。
List<Application> applist = getAppList();
List<Pair<Query, Update>> updates = new ArrayList<>(applist.size());
applist.forEach(application -> {
Query query = Query.query(Criteria.where("AppID").is(application.getAppID()));
Update update = new Update();
update.set("AppID", application.getAppID());
update.set("AppName", application.getAppName());
update.set("AppStatus", application.getAppStatus());
updates.add(Pair.of(query, update));
});
BulkOperations bulkOperations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "Application");
bulkOperations.upsert(updates);
bulkOperations.execute();
我对 MongoDB 很陌生。试图了解在 MongoDB 中执行批量写入的最佳选项。我想定期刷新我的 Application 集合。文档的键是 AppID、AppName 和 AppStatus。 以下是我想在每个 运行 -
中执行的操作- 在应用程序集合中找到 AppID。
- 如果不存在,执行插入
- 如果存在,只更新 AppStatus 键的值。
List<Application> applist = getAppList(); // List contains All the Application private final MongoClient mongoClient; private final MongoTemplate mongoTemplate; MongoCollection<Document> collection = mongoTemplate.getDb().getCollection("Application"); collection.bulkWrite (????);
如何遍历 appList 并执行批量 insert/update?
您可以使用 org.springframework.data.mongodb.core.BulkOperations
执行批量 update/insert/upsert/delete 操作。
List<Application> applist = getAppList();
List<Pair<Query, Update>> updates = new ArrayList<>(applist.size());
applist.forEach(application -> {
Query query = Query.query(Criteria.where("AppID").is(application.getAppID()));
Update update = new Update();
update.set("AppID", application.getAppID());
update.set("AppName", application.getAppName());
update.set("AppStatus", application.getAppStatus());
updates.add(Pair.of(query, update));
});
BulkOperations bulkOperations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "Application");
bulkOperations.upsert(updates);
bulkOperations.execute();