Как динамически применить условный оператор к полю с помощью официального MongoDB-CSharp-Driver?

Я пытаюсь сгенерировать запрос, который находит все большие красные объекты со стоимостью больше 3.

Кажется, этот запрос является тем, что мне нужно:

{ "color" : "red", "size" : "large", "cost" : { "$gt" : 3.0 } }

Но я не могу найти элегантный способ создать условие стоимости, используя официальный драйвер MongoDB CSharp. Это один из приемов, который, кажется, создает запрос:

QueryConditionList gt = Query.GT("cost", BsonDouble.Create(3));

QueryDocument query = new QueryDocument();
query.Add("color", "red");
query.Add("size", "large");
query.Add(gt.ToBsonDocument().Elements);

List<BsonDocument> results = events.Find(query).ToList();

Другой способ сделать это, который кажется работающим, выглядит следующим образом:

QueryDocument query = new QueryDocument();
query.Add("color", "red");
query.Add("size", "large");
query.Add("cost", new BsonDocument("$gt", BsonDouble.Create(3)));

List<BsonDocument> results = events.Find(query).ToList();

Является ли какой-либо из этих подходов хорошим способом добиться этого? Есть ли другой?

Мне нужно использовать методы, которые позволяют мне динамически строить запрос и добавлять поля, которые будут задействованы в запросе. Я надеялся найти способ добавить условие через query.Add (), но не знаю, возможно ли это.

Любая помощь приветствуется.

5
задан Vyrotek 17 January 2012 в 03:50
поделиться