Sto cercando di generare una query che trova tutti i grandi, cose rosse con un costo maggiore di 3.Come si applica in modo dinamico un operatore condizionale a un campo utilizzando il driver MongoDB-CSharp ufficiale?
Questa domanda sembra essere quello che sto cercando:
{ "color" : "red", "size" : "large", "cost" : { "$gt" : 3.0 } }
Ma, io sono impossibile trovare un modo elegante per creare la condizione di costo utilizzando il driver CSharp MongoDB ufficiale. Questa è una mod che sembra creare la query:
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();
Un altro modo per farlo che sembra funzionare è come questo:
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();
Sono uno di questi approcci un buon modo per ottenere questo risultato? C'è un altro?
Ho bisogno di utilizzare tecniche che mi consentono di creare dinamicamente la query e aggiungere campi che saranno coinvolti nella query. Speravo di trovare un modo per aggiungere una condizione tramite query.Add() ma non so se è possibile.
Qualsiasi aiuto è apprezzato.
Grazie. Il fatto che Query.E restituito un QueryComplete mi stava buttando fuori. Ho continuato a pensare in termini di come puoi costruire un'espressione LINQ. Grazie per aver indicato che richiede un array e non solo operandi. Fondamentalmente ho fatto ciò che hai aggiunto con la tua modifica e sembra funzionare alla grande. – Vyrotek