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#驱动程序中的错误?
更新包含重载的方法SafeMode.只需将它作为更新的第四个参数添加到您的代码中,并且不应为null:
...
UpdateFlags.Multi,
SafeMode.True);
Run Code Online (Sandbox Code Playgroud)
这不是驱动程序错误,它按预期工作.MongoDB中不会等待文件如果获得没有插入安全模式(因此驱动器返回NULL),但如果你说安全模式=真 - 你逼的MongoDB等到文件得到插入.
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |