获取insertbatch命令插入的每个对象的返回状态

时间:2012-05-07 22:56:27

标签: c# mongodb mongodb-.net-driver

我正在使用Mongo Db的C#驱动程序。 我想使用insertbatch命令传递一个对象列表(IList)。 对于插入的每个对象,我想知道结果状态(如果插入成功与否)。我看到insertbatch只为它插入的每个16MB块返回一个SafeModeResult对象。 如果我想使用insertbatch命令并获取我插入的每个对象的返回状态,对我来说最好的方法是什么?

使用返回多个元素的查询从集合中删除元素后面会出现同样的问题。我想知道我删除的每个元素,如果它已成功删除。

2 个答案:

答案 0 :(得分:1)

首先,确保SafeMode已启用。最简单的方法是在连接字符串中设置SafeMode:

var connectionString =“mongodb:// localhost /?safe = true”;

如果InsertBatch在没有抛出异常的情况下完成,则您知道所有文档都已插入且没有错误。

如果InsertBatch抛出异常,则它在批处理中途失败。不幸的是,服务器没有报告它在失败之前到达批处理的距离,并且您将查询数据库以查看是否插入了特定文档。

答案 1 :(得分:0)

对于Remove,如果Remove完成而不抛出异常,那么您就知道所有匹配的文档都已成功删除。

如果服务器报告错误(假设安全模式已启用),则删除会引发异常。但是,服务器不会报告是否删除了任何文档。使用传递给Remove的相同查询调用Find将检索所有未删除的文档。