Доброе утро, учитывая, что я не обладаю обширными знаниями о базах данных, меня попросили разработать обобщенный класс c MongoDB, производный от абстрактного класса Database, и реализовать "Вставить", "Выбрать", "Обновить" и " Удалить "методы для MongoDB, используя синтаксис SQL в качестве входных данных. У меня возникают трудности при преобразовании запросов, подобных этому
SELECT auto,Part,Entity_ID,Pos_Z
FROM Nesting
WHERE Part='033TRAVERSOLATERALE3' or (Part='033TRAVERSOLATERALE1' and Pos_Z=-90)
ORDER BY Pos_Z ASC, Entity_ID DESC
в MongoDB, также с помощью Aggregation Framework. Может кто-нибудь сказать мне, есть ли пакет Nuget или фрагмент кода, который уже выполняет преобразование запроса? Я нашел несколько полезных инструментов, но никаких библиотек или источников. Нет ли другого способа, кроме разбора строки аргумента SQL WHERE для преобразования запроса?
Part='033TRAVERSOLATERALE3' or (Part='033TRAVERSOLATERALE1' and Pos_Z=-90)
в стадию совпадения MongoDB $ с этим аргументом:
{
$or:[{Part: {$eq:'033TRAVERSOLATERALE3'}}, {$and:[{Part: {$eq:'033TRAVERSOLATERALE1'}}, {Pos_Z: {$eq:-90}}]}]
}
или
BsonDocument filter = new BsonDocument();
filter.Add("$or", new BsonArray()
.Add(new BsonDocument()
.Add("Part", "033TRAVERSOLATERALE3")
)
.Add(new BsonDocument()
.Add("$and", new BsonArray()
.Add(new BsonDocument()
.Add("Part", "033TRAVERSOLATERALE1")
)
.Add(new BsonDocument()
.Add("Pos_Z", new BsonInt64(-90L))
)
)
)
);
Любая помощь для этой "грязной" работы будет принята с благодарностью. Спасибо