sql >> Base de Datos >  >> NoSQL >> MongoDB

Comparando dos campos de la colección mongo usando el controlador c # en mono

En realidad, no es muy simple. Esto debería ser posible con una consulta como:

var users = collection.Find(user => user.LastModifiedAt > user.LastSyncedAt).ToList();

Pero, lamentablemente, MongoDriver no pudo traducir esta expresión. Puede consultar a todos los usuarios y filtrar en el lado del cliente:

var users = collection.Find(Builders<User>.Filter.Empty)
                      .ToEnumerable()
                      .Where(user => user.LastModifiedAt > user.LastSyncedAt)
                      .ToList();

O envíe una consulta json, porque MongoDb mismo puede hacerlo:

var jsonFliter = "{\"$where\" : \"this.LastModifiedAt>this.LastSyncedAt\"}";
var users = collection.Find(new JsonFilterDefinition<User>(jsonFliter))
                      .ToList();

Y, sí, necesita una propiedad de identificación para su clase de modelo, no la he mencionado primero, porque pensé que tenía una, pero no se publicó en la pregunta.