更新后,SafeModeResult为null

Jus*_*tin 5 mongodb mongodb-.net-driver

使用MongoDB和最新的10gen C#驱动程序(CSharpDriver-1.3.1.4349),我正在尝试进行"就地"更新并获取结果中影响的文档数量.

public static long SaveListings(string state, bool isActive, DateTime updateDate)
{
    var result = Collection().Update(
    Query.And(
        Query.EQ("State", state), 
        Query.And(
            Query.EQ("IsActive", isActive),
            Query.LT("UpdateDate", updateDate))),
    Update.Set("IsActive", false), UpdateFlags.Multi);
    return result != null ? result.DocumentsAffected : -1;
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,结果为null.如果我是从控制台执行此操作,我可以通过执行以下操作来获取行数:

db.Listing.update( { State: state.Abbreviation, IsActive: true, UpdateDate: { $lt: expiredDate } }, { $set: { IsActive: false } }, false, true);
var numRows = db.getLastErrorObj().n;
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么,或者这是C#驱动程序中的错误?

And*_*ich 6

更新包含重载的方法SafeMode.只需将它作为更新的第四个参数添加到您的代码中,并且不应为null:

...
UpdateFlags.Multi,
SafeMode.True);
Run Code Online (Sandbox Code Playgroud)

这不是驱动程序错误,它按预期工作.MongoDB中不会等待文件如果获得没有插入安全模式(因此驱动器返回NULL),但如果你说安全模式=真 - 你逼的MongoDB等到文件得到插入.