MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сравняване на две полета на mongo колекция с помощта на c# драйвер в mono

Всъщност не е много просто. Това би трябвало да е възможно със заявка като :

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

Но за съжаление MongoDriver не можа да преведе този израз. Можете да направите заявка за всички потребители и да филтрирате от страна на клиента:

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

Или изпратете json заявка, защото самата MongoDb може да го направи:

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

И, да, имате нужда от Id - Property за вашия клас модел, не го споменах първо, защото мислех, че имате такъв, просто не е публикуван във въпроса.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Как да намерите точната версия на инсталирания MongoDB

  2. Запитване за тригери за изтриване на MongoDB

  3. Какъв е правилният начин да направите HAVING в MongoDB GROUP BY?

  4. Актуализиране на поддокумент в mongodb?

  5. Как мога да направя заявка с mongoose от функция, използваща параметър?