Я создал эту схему.
routes: [
{
origin: {
title: {type:String,uppercase:true,required:true},
isRegion: Boolean
},
destination: {
title: {type:String,uppercase:true,required:true},
isRegion: Boolean
},
carrier: [
{
name: {type:String,uppercase:true,required:true},
category:[
{
title: {type:String,required:true},
classes: [
{
title: {type:String,uppercase:true,required:true},
commission: Number
}
]
}
]
}
]
}
],
regions: [
{
title: {type:String,uppercase:true,required:true},
towns: [
{
name: {type:String,uppercase:true,required:true}
}
]
}
],
contractOwner: {type:String,uppercase:true}
Это контракт для сотрудника, который совершает поездки с доставкой, это продукты доставки, которые могут быть доставлены перевозчиком, в зависимости от того, что перевозчик может иметь разные категории иДля каждой категории представлен класс, который имеет комиссию за его доставку.Кроме того, эти заказы поступают из региона происхождения в регион назначения.Эти регионы включают определенные города, которые предусмотрены в контракте.
Проблема заключается в том, что, когда работник получает заказ, он запрашивается из города в другой город, а в некоторых случаях он заказывается с помощью конкретного перевозчика икатегория.Таким образом, в первую очередь ищите город происхождения, если он принадлежит региону, так же как и город назначения, после этой проверки снова фильтруйте найденные регионы и углубляйтесь в поддокументы для других фильтров с помощью операции «фильтр»в «проекте» агрегатного конвейера.
Вся эта операция занимает много времени, а индексы не так уж и хороши, я думаю, возможно, схему можно улучшить или в любом случае способ улучшить конвейер.
Заранее благодарен за помощь