Есть ли способ добавить несколько операторов сопоставления в запросе Монго во время выполнения? - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над веб-API на C #, который получает данные из пользовательского интерфейса в виде массива JSON, который содержит некоторые данные, которые я хочу использовать в предложениях соответствия в моем запросе MongoDB.

Iя пытаюсь сделать запрос как можно более динамичным, чтобы он работал с разными коллекциями и любым количеством операторов сопоставления, которые я хочу добавить во время выполнения, так как он будет извлекаться один за другим из массива JSON.

Я пытался использовать StringBuilder, доступный в C #, но так как построитель строк возвращает строку, а монго-запрос должен быть BsonDocument.

StringBuilder queryParam = new StringBuilder();
queryParam.Append("{\"" + item.Collection+"."+item.Key+"\""+ "new BsonDocument(){\"" + item.Collection + "." + item.Key + "\", new BsonDocument() { {\"$in\",  BsonArray.Create(" + item.Key + ")}}},");
var query = queryParam.ToString().Trim('"');

Оператор соответствия в запросе, который я пробовал, выглядит следующим образом

{"$match", new BsonDocument(){
                            {item.Collection+"."+item.Key,query }}}

при запуске результата это должно выглядеть как

{"$match, new BsonDocument(){{"<Value of item.Collection . "Value of item.Key",query }}}

Теперь, когда цикл снова запускается в массиве Json, мой оператор соответствия должен быть:

{"$match, new BsonDocument(){
{"<Value of item[1].Collection . "Value of item[1].Key",query },
{"<Value of item[2].Collection . "Value of item[2].Key",query }
}}

AND SOON ...

Простите, если вопрос абсурдный, я новичок в MongoDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...