MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Confronto di due campi della raccolta mongo utilizzando il driver C# in mono

In realtà, non è molto semplice. Questo dovrebbe essere possibile con query come :

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

Ma sfortunatamente MongoDriver non è stato in grado di tradurre questa espressione. Puoi interrogare tutti gli utenti e filtrare sul lato client:

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

Oppure invia una query json, perché MongoDb stesso è in grado di farlo:

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

E sì, hai bisogno di un Id - Proprietà per la tua classe modello, non l'ho menzionato prima, perché pensavo che ne avessi uno, ma non pubblicato nella domanda.