sql >> Databasteknik >  >> NoSQL >> MongoDB

Jämför två fält av mongosamling med c#-drivrutinen i mono

Egentligen är det inte särskilt enkelt. Detta bör vara möjligt med frågor som :

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

Men tyvärr kunde MongoDriver inte översätta detta uttryck. Du kan antingen fråga alla användare och filtrera på klientsidan:

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

Eller skicka json-fråga, eftersom MongoDb själv kan göra det:

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

Och ja, du behöver ett Id - Property för din modellklass, jag har inte nämnt det först, för jag trodde att du hade ett, bara inte postat i frågan.



  1. Hur man gör en anpassad fråga med django-nonrel och mongodb

  2. Varför fryser PyGame när det används i kombination med PyMongo?

  3. MongoDB $pull

  4. C# MongoDb Anslut till Replica Set Issue