Как улучшить эту схему MongoDB для смешанных запросов? - PullRequest
0 голосов
/ 03 июля 2019

Я создал эту схему.

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}

Это контракт для сотрудника, который совершает поездки с доставкой, это продукты доставки, которые могут быть доставлены перевозчиком, в зависимости от того, что перевозчик может иметь разные категории иДля каждой категории представлен класс, который имеет комиссию за его доставку.Кроме того, эти заказы поступают из региона происхождения в регион назначения.Эти регионы включают определенные города, которые предусмотрены в контракте.

Проблема заключается в том, что, когда работник получает заказ, он запрашивается из города в другой город, а в некоторых случаях он заказывается с помощью конкретного перевозчика икатегория.Таким образом, в первую очередь ищите город происхождения, если он принадлежит региону, так же как и город назначения, после этой проверки снова фильтруйте найденные регионы и углубляйтесь в поддокументы для других фильтров с помощью операции «фильтр»в «проекте» агрегатного конвейера.

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

Заранее благодарен за помощь

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