Usando MongoDB y el último controlador 10gen C# (CSharpDriver-1.3.1.4349), estoy tratando de hacer una actualización "en el lugar" y recuperar el número de documentos efectuados en el resultado.SafeModeResult es nulo después de la actualización
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;
}
El resultado es nulo por alguna razón. Si yo estuviera haciendo esto desde la consola, podría obtener el número de filas efectuada por hacer esto:
db.Listing.update({ State: state.Abbreviation, IsActive: true, UpdateDate: { $lt: expiredDate } }, { $set: { IsActive: false } }, false, true);
var numRows = db.getLastErrorObj().n;
Alguna idea de lo que estoy haciendo mal o se trata de un error en el controlador C#?
¡Gracias! Sé cómo funciona el modo seguro, pero asumí incorrectamente que la conexión usaría el modo seguro por defecto. – Justin
Tuve el mismo problema, tenga en cuenta que el controlador actual tiene problemas con la autenticación al usar getLastError explícitamente. Robert (desarrollador en 10gen) recomendando utilizar SafeMode.True en su lugar hasta que se resuelva el problema. ver https://jira.mongodb.org/browse/CSHARP-390 – sambomartin