MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Vergleich zweier Felder der Mongo-Sammlung mit c#-Treiber in Mono

Eigentlich ist es nicht ganz einfach. Dies sollte mit Abfragen wie :

möglich sein
var users = collection.Find(user => user.LastModifiedAt > user.LastSyncedAt).ToList();

Aber leider konnte MongoDriver diesen Ausdruck nicht übersetzen. Sie könnten entweder alle Benutzer abfragen und auf der Client-Seite filtern:

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

Oder senden Sie eine JSON-Abfrage, da MongoDb selbst dazu in der Lage ist:

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

Und ja, Sie brauchen eine ID - Eigenschaft für Ihre Modellklasse, ich habe sie nicht zuerst erwähnt, weil ich dachte, Sie haben eine, nur nicht in der Frage gepostet.