MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comparaison de deux champs de collection mongo à l'aide du pilote c # en mono

En fait, ce n'est pas très simple. Cela devrait être possible avec une requête telle que :

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

Mais malheureusement, MongoDriver n'a pas pu traduire cette expression. Vous pouvez soit interroger tous les utilisateurs et filtrer côté client :

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

Ou envoyez une requête json, car MongoDb lui-même est capable de le faire :

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

Et, oui, vous avez besoin d'un Id - Property pour votre classe de modèle, je ne l'ai pas mentionné en premier, car je pensais que vous en aviez un, mais pas posté dans la question.