使用vertx批量写入mongoDB

时间:2018-03-21 12:20:31

标签: java mongodb vert.x

我正在使用BulkWriteWithOptions在DB中插入多个文档。我想要插入的文档,以便我可以知道哪个插入,失败或重复文档。 以下是我正在使用的代码

mongoClient.bulkWriteWithOptions(collection, operations, options, repoAsyncResult -> {
                    if (repoAsyncResult.failed()) {

                        LOGGER.error("Bulk insertion failed : {}", repoAsyncResult.cause().getMessage());
                        if(repoAsyncResult.cause() instanceof MongoBulkWriteException ){
                            MongoBulkWriteException exception = (MongoBulkWriteException)repoAsyncResult.cause() ;
                            exception.getWriteErrors().forEach(error -> {
                                LOGGER.error("Insert Error : " + error.getMessage());
                            });
                        }
                        repoFuture.fail(repoAsyncResult.cause());

                    } else {
                        LOGGER.info("Bulk insertion successful : {}", repoAsyncResult.result().toJson());
                        repoFuture.complete(repoAsyncResult.result().toJson());
                    }
                });

有没有办法让插入的文件成为结果?

1 个答案:

答案 0 :(得分:1)

不,您只能从repoAsyncResult.result().getUpserts()获取已提交文件的ID(List<JsonObject> .getAsString("_id")将返回已插入的ID。)