我正在为 Mongo Db 使用 C# 驱动程序。我想使用 insertbatch 命令向它传递一个对象列表(IList)。对于插入的每个对象,我想知道结果状态(是否成功插入)。我看到 insertbatch 只为它插入的每个 16MB 块返回一个 SafeModeResult 对象。如果我想使用 insertbatch 命令并为我插入的每个对象获取返回状态,对我来说最好的方法是什么?
对于使用返回多个元素的查询从集合中删除元素,同样的问题也随之而来。我想知道我删除的每个元素是否已成功删除。
我正在为 Mongo Db 使用 C# 驱动程序。我想使用 insertbatch 命令向它传递一个对象列表(IList)。对于插入的每个对象,我想知道结果状态(是否成功插入)。我看到 insertbatch 只为它插入的每个 16MB 块返回一个 SafeModeResult 对象。如果我想使用 insertbatch 命令并为我插入的每个对象获取返回状态,对我来说最好的方法是什么?
对于使用返回多个元素的查询从集合中删除元素,同样的问题也随之而来。我想知道我删除的每个元素是否已成功删除。
首先,确保安全模式已打开。最简单的方法是在连接字符串中设置 SafeMode:
var connectionString = "mongodb://localhost/?safe=true";
如果 InsertBatch 完成且未引发异常,则您知道所有文档均已插入且没有错误。
如果 InsertBatch 引发异常,则它在批处理的中途失败。不幸的是,服务器没有报告在失败之前它进入了多少批次,您将查询数据库以查看是否插入了特定文档。
对于 Remove 类似,如果 Remove 完成且未引发异常,则您知道所有匹配的文档都已成功删除。
如果服务器报告错误(假设 SafeMode 已打开),则 Remove 会引发异常。但是,服务器不会报告它是否删除了任何文档。使用传递给 Remove 的相同查询调用 Find 将检索所有未删除的文档。