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.