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

Sammenligning af to felter af mongo-samling ved hjælp af c#-driver i mono

Faktisk er det ikke særlig simpelt. Dette burde være muligt med forespørgsler såsom:

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

Men desværre kunne MongoDriver ikke oversætte dette udtryk. Du kan enten forespørge alle brugere og filtrere på klientsiden:

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

Eller send json-forespørgsel, fordi MongoDb selv er i stand til at gøre det:

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

Og ja, du har brug for et id - ejendom til din modelklasse, jeg har ikke nævnt det først, fordi jeg troede, du havde et, bare ikke skrevet i spørgsmålet.



  1. Mongo find værdi med ukendt overordnet nøgle

  2. spring server kan ikke oprette forbindelse til redis ved hjælp af jedis klient

  3. Mongo Java-driveren overholder ikke grænsemetoden

  4. Spring tidsstempler over mellemware for visse opdateringer i Mongoose