gpt4 book ai didi

java - Mongodb 批量操作中的跟踪操作

转载 作者:行者123 更新时间:2023-12-01 12:08:19 24 4
gpt4 key购买 nike

我使用的是 MongoDB 2.6.1。我的问题是——“是否可以在批量操作中跟踪_id?”假设我为 BulkWriteOperation 创建了一个对象,例如将 50 个文档从“A”集合插入到“B”集合。我还需要保留成功写入操作和失败写入操作的列表

批量插入和删除工作正常。但问题是——--“我需要跟踪 _ids,用于查询 - 查找 A 中的文档插入到 B 集合。同时,我需要保留_ids 列表(成功和失败的操作)。我需要删除 A 集合中的文档,仅删除那些成功的操作,并保留失败的文档"--

请帮帮我。

谢谢你:):)

最佳答案

首先,您需要使用 UnorderedBulkOperation 来执行整个批处理。您需要在 BulkWriteOperation.execute() 周围使用 try/catch,捕获 BulkWriteException这将使您可以访问 BulkWriteError 的列表以及 BulkWriteResult .

这是一个快速但肮脏的例子:

MongoClient m = new MongoClient("localhost");
DB db = m.getDB( "test" );
DBCollection coll = db.getCollection( "bulk" );
coll.drop();
coll.createIndex(new BasicDBObject("i", 1), new BasicDBObject("unique", true));

BulkWriteOperation bulkWrite = coll.initializeUnorderedBulkOperation();

for (int i = 0; i < 100; i++) {
bulkWrite.insert(new BasicDBObject("i", i));
}
// Now add 10 documents to the batch that will generate a unique index error
for (int i = 0; i < 10; i++) {
bulkWrite.insert(new BasicDBObject("i", i));
}

BulkWriteResult result = null;
List<BulkWriteError> errors = null;
try {
result = bulkWrite.execute();
} catch (BulkWriteException bwe) {
bwe.printStackTrace();
errors = bwe.getWriteErrors();
result = bwe.getWriteResult();
}

for (BulkWriteError e : errors) {
System.out.println(e.getIndex() + " failed");
}

System.out.println(result);

关于java - Mongodb 批量操作中的跟踪操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com