Korzystając z MongoDB i najnowszego sterownika C# 10 (CSharpDriver-1.3.1.4349), próbuję wykonać aktualizację "w miejscu" i odzyskać # dokumentów wykonanych w wyniku.SafeModeResult ma wartość null po aktualizacji
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;
}
Wynik jest z jakiegoś powodu zerowy. Gdybym robił to z konsoli, mogę dostać liczbę wierszy dokonane w ten sposób:
db.Listing.update({ State: state.Abbreviation, IsActive: true, UpdateDate: { $lt: expiredDate } }, { $set: { IsActive: false } }, false, true);
var numRows = db.getLastErrorObj().n;
Każdy pomysł co robię źle czy jest to błąd w sterowniku C#?
Dzięki! Wiem, jak działa tryb bezpieczny, ale błędnie założyłem, że połączenie domyślnie korzysta z trybu awaryjnego. – Justin
Miałem ten sam problem, uważam, że obecny sterownik ma problem z uwierzytelnianiem podczas jawnego używania getLastError. Robert (dev na 10gen) zalecający użycie SafeMode.True zamiast do naprawienia prob. zobacz https://jira.mongodb.org/browse/CSHARP-390 – sambomartin