У меня есть CouchDB ( v2.3.1 ), содержащая множество документов GeoJSON. Я использую couchdb-nano
и выполняю запросы, используя db.find()
.
Все мои запросы занимают слишком много времени (более 3-4 секунд), хотя я создал несколько индексов. Как лучше всего оптимизировать БД для таких сложных запросов или как я могу преобразовать этот запрос Манго в систему представлений?
Вот как я создаю индекс и как предварительно формирую запрос манго:
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"
]
}
}
]
}
}
}