我使用的是MongoDB 2.6.1。我的问题是--“是否有可能在批量操作中跟踪_id?”假设我为BulkWriteOperation创建了一个对象,例如,从'A‘集合中插入到'B’集合的50个文档。我需要保存一个成功写操作和失败写操作的列表。
批量插入和删除操作正常。但问题是--“我需要跟踪_ids,查询--查找从A和insert到B集合的文档。同时,我需要保留_ids (成功操作和失败操作)的列表。,我需要删除A集合中的文档,只为那些成功的操作和保存失败的文档()”--
请帮帮我。
(谢谢:) )
发布于 2014-12-11 13:26:10
首先,需要使用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);
https://stackoverflow.com/questions/27422040
复制相似问题