用springdata mongodb写操作结果

时间:2014-09-02 13:52:11

标签: java spring mongodb spring-data-mongodb

我想看看insert delete ect的结果。 (写操作) 我使用Mongo 2.6和spring-data-mongodb 1.5.4 我知道,因为mongo v 2.6可以看到WriteResult(http://docs.mongodb.org/manual/reference/method/db.collection.insert/看到返回),是否有可能在spring-data-mongo中看到它?

谢谢!

1 个答案:

答案 0 :(得分:0)

您所引用的BulkWriteResult的唯一位置是使用Bulk Operations API的操作结果。

这是从MongoDB 2.6开始引入的,因此它至少需要在服务器上使用该版本才能工作。您将在shell中看到这些响应,因为从该版本开始,shell中的所有辅助方法实际上都使用" bulk"命令的变体"引擎盖"。因此,即使只调用了一个操作,它实际上也使用了" bulk"连接到支持它的服务器时,引擎盖下的变种。

批量操作在底层Java驱动程序中实现,但您需要从Spring mongoOperations上下文中获取该底层驱动程序集合对象,然后才能调用它们。

因此,方法签名和返回与Spring Data实现的方法不同,但它们是基本的驱动程序方法。但是当然你仍然可以访问它们并在你的代码中使用它们:

    DBCollection collection = mongoOperation.getCollection("collection");
    BulkWriteOperation bulkWriteOperation =
        collection.initializeOrderedBulkOperation();

    DBObject content = new BasicDBObject("field","value");
    bulkWriteOperation.insert(content);

    BulkWriteResult writeResult = bulkWriteOperation.execute();

    System.out.println(writeResult);

也许有一天整合会更加完整。但目前这是基于核心驱动程序的大多数框架实现滞后的一个领域。事实上,核心驱动程序目前在遗留方法和批量方法之间分开,因此任何一般实现最好像助手一样在shell中进行处理,以实现向后兼容性。