Sử dụng MongoDB và trình điều khiển 10gen C# mới nhất (CSharpDriver-1.3.1.4349), tôi đang cố thực hiện cập nhật "tại chỗ" và lấy lại # tài liệu được thực hiện trong kết quả.SafeModeResult là null sau khi cập nhật
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;
}
Kết quả không có lý do nào. Nếu tôi được làm điều này từ giao diện điều khiển, tôi có thể nhận được số hàng thực hiện bằng cách làm này:
db.Listing.update({ State: state.Abbreviation, IsActive: true, UpdateDate: { $lt: expiredDate } }, { $set: { IsActive: false } }, false, true);
var numRows = db.getLastErrorObj().n;
Bất kỳ ý tưởng những gì tôi đang làm sai hoặc đây là một lỗi trong trình điều khiển C#?
Cảm ơn! Tôi biết chế độ an toàn hoạt động như thế nào tuy nhiên tôi đã giả định không chính xác rằng kết nối sẽ sử dụng chế độ an toàn theo mặc định. – Justin
Tôi đã có cùng một vấn đề, hãy lưu ý trình điều khiển hiện tại có vấn đề với xác thực khi sử dụng getLastError một cách rõ ràng. Robert (dev tại 10gen) đề xuất sử dụng SafeMode.True thay vì cho đến khi prob được sửa. xem https://jira.mongodb.org/browse/CSHARP-390 – sambomartin