我有一个CouchDB( v2.3.1 ),其中包含大量的GeoJSON文档。我使用couchdb-nano
,并使用db.find()
执行查询。
即使创建了一些索引,我所有的查询都花费了太长时间(3-4秒以上)。为此类复杂查询优化数据库的最佳方法是什么,或者如何将该Mango查询转换为视图系统?
这是我创建索引以及执行芒果查询的方式:
const indexDef = {
index: {
fields: [
'fileName',
'category',
'features.properties.CNTR_CODE',
'features.properties.CNTR_ID',
'features.propertires.LEVL_CODE',
],
},
name: 'nutsindex',
};
await db.createIndex(indexDef).then(result => {
resolve(result);
});
const couch = nano(DB_URI);
const db = couch.use(DB_NAME);
const limit = 999;
db.find({ selector, limit }).then(docs => docs)
这是典型选择器的示例:
{
"year":2016,
"category":"Region",
"fileName":{
"$or":[
{
"$regex":"(?i)label"
},
{
"$regex":"(?i)10M"
}
]
},
"features":{
"$elemMatch":{
"$and":[
{
"properties.LEVL_CODE":2
},
{
"properties.CNTR_CODE":{
"$in":[
"FR"
]
}
}
]
}
}
}