MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Comparando dois campos da coleção mongo usando o driver c# em mono


Na verdade, não é muito simples. Isso deve ser possível com consultas como:
var users = collection.Find(user => user.LastModifiedAt > user.LastSyncedAt).ToList();

Mas infelizmente o MongoDriver não conseguiu traduzir essa expressão. Você pode consultar todos os usuários e filtrar no lado do cliente:
var users = collection.Find(Builders<User>.Filter.Empty)
                      .ToEnumerable()
                      .Where(user => user.LastModifiedAt > user.LastSyncedAt)
                      .ToList();

Ou envie uma consulta json, pois o próprio MongoDb é capaz de fazer isso:
var jsonFliter = "{\"$where\" : \"this.LastModifiedAt>this.LastSyncedAt\"}";
var users = collection.Find(new JsonFilterDefinition<User>(jsonFliter))
                      .ToList();

E, sim, você precisa de um Id - Property para sua classe de modelo, não mencionei isso primeiro, porque pensei que você tivesse um, mas não postado na pergunta.