Я пытаюсь сгенерировать запрос, который находит все большие, красные вещи со стоимостью, превышающей 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 (), но я не знаю, возможно ли это.
Любая помощь приветствуется.