CouchDB使用nano索引GeoJSON文档

时间:2019-06-11 12:23:02

标签: couchdb couchdb-nano couchdb-2.0 couchdb-mango

我有一个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"
                  ]
               }
            }
         ]
      }
   }
}

0 个答案:

没有答案