Я пытаюсь выполнить простую раскрутку и заменить root в .net core 2.2.Я уже пробовал запрос в MongoDB, и он работает, но мне трудно перевести его на 100% в C # без использования волшебных строк.
Это мой документ:
{
"_id" : ObjectId("5cb6475b20b49a5cec99eb89"),
"name" : "Route A"
"isActive" : true,
"buses" : [
{
"capacity" : "15",
"time" : "08:00:00",
"direction" : "Inbound"
},
{
"capacity" : "15",
"time" : "08:30:00",
"direction" : "Inbound"
},
{
"capacity" : "15",
"time" : "08:00:00",
"direction" : "Outbound"
},
{
"capacity" : "15",
"time" : "08:30:00",
"direction" : "Outbound"
}
]
}
У меня также есть класс для корневого документа под названием «Маршруты» и еще один для вложенного документа под названием «Шина».
Этот запрос, который я запускаю в монго, следующий:
db.routes.aggregate([
{ $match : { "_id" : ObjectId("5cb4e818cb95b3572c8f0f2c") } },
{ $unwind: "$buses" },
{ $replaceRoot: { "newRoot": "$buses" } }
])
ОжидаемыйВ результате получается простой массив шин, и пока я получаю его с этим запросом в C #
_routes.Aggregate()
.Match(r => r.Id == routeId)
.Unwind<Route, UnwoundRoute>(r => r.Buses)
.ReplaceRoot<Bus>("$buses")
.ToListAsync();
Я хочу знать, возможно ли заменить строку «$bus» чем-то, что не является жестко закодированным.
Я пытался использовать класс AggregateExpressionDefinition, который является одним из возможных параметров, которые может получить метод ReplaceRoot, но я не смог понять его полностью.
Любая помощь будет оценена.