如何针对混合查询改善此MongoDB模式?

时间:2019-07-02 22:29:30

标签: javascript mongodb aggregation-framework mongoose-schema

我已经创建了这个架构。

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}

这是针对进行交货旅行的员工的合同,该交货产品可以由承运人交付,根据该承运人可能具有不同的类别,并且对于每个类别都呈现一个具有交付佣金的类别。同样,这些订单是从原产地到目的地。这些地区包括合同规定的某些城镇。

问题在于,当工人收到订单时,它是从一个镇到另一个镇的请求,在某些情况下,他们是通过特定的承运人和类别来订购的。因此,第一件事是寻找原产地镇,如果它属于一个区域,同样是目的地镇,则在此检查之后再次对找到的区域进行过滤,并通过“过滤器”操作深入子文档中查找其他过滤器在聚合管道的“项目”中。

所有这些操作都需要花费很多时间,并且索引并不是那么支持,我认为也许可以改进模式,或者在任何情况下都可以改善管道。

感谢您的提前帮助

0 个答案:

没有答案