Utilizzando MongoDB e l'ultimo driver 10gen C# (CSharpDriver-1.3.1.4349), sto tentando di eseguire un aggiornamento "sul posto" e recuperare il numero di documenti effettati nel risultato.SafeModeResult è null dopo l'aggiornamento
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;
}
Il risultato è nullo per qualche motivo. Se fossi facendo questo dalla console, ho potuto ottenere il numero di righe effettuato in questo modo:
db.Listing.update({ State: state.Abbreviation, IsActive: true, UpdateDate: { $lt: expiredDate } }, { $set: { IsActive: false } }, false, true);
var numRows = db.getLastErrorObj().n;
Qualsiasi idea di cosa sto facendo male o si tratta di un bug nel driver C#?
Grazie! So come funziona la modalità sicura, tuttavia ho assunto erroneamente che la connessione utilizza la modalità provvisoria per impostazione predefinita. – Justin
Ho avuto lo stesso problema, ricorda che il driver corrente ha problemi con l'autenticazione quando usi getLastError in modo esplicito. Robert (dev con 10gen) consiglia di utilizzare SafeMode.True invece di correggere prob. vedere https://jira.mongodb.org/browse/CSHARP-390 – sambomartin