sql >> Databáze >  >> NoSQL >> MongoDB

Porovnání dvou polí kolekce mongo pomocí ovladače c# v mono

Ve skutečnosti to není příliš jednoduché. To by mělo být možné pomocí dotazu jako :

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

MongoDriver však tento výraz bohužel nedokázal přeložit. Můžete se buď zeptat všech uživatelů a filtrovat na straně klienta:

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

Nebo pošlete dotaz json, protože samotný MongoDb to umí:

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

A ano, potřebujete Id - Property pro vaši modelovou třídu, nezmínil jsem se o tom jako první, protože jsem si myslel, že nějaké máte, ale není to uvedeno v otázce.



  1. Aktualizujte vložený dokument v mongodb pomocí C#

  2. Hodnota prázdného řetězce MongoDB vs nulová hodnota

  3. Jak používat findAndModify v php a mongodb

  4. mongoDB Agregation retunes prázdný