找不到与CouchDB和sort匹配的索引

v64noz0r  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(157)

我有以下疑问:

{
   "selector":{
      "lastname":{
         "$regex":"(?i)[cç][oòóôõöø]"
      },
      "firstname":{
         "$gt":null
      },
      "type":"person",
      "owner":{
         "$in":["admin"]
      }
   },"sort":["lastname","firstname"]
}

又试了许多索引:

{
 "type": "json",
 "def": {
  "fields": [
   {
    "lastname": "asc"
   }
  ]
 }
}

{
 "type": "json",
 "def": {
  "fields": [
   {
    "lastname": "asc"
   },
   {
    "firstname": "asc"
   }
  ]
 }
}

{
 "type": "json",
 "def": {
  "fields": [
   {
    "lastname": "asc"
   },
   {
    "firstname": "asc"
   },
   {
    "type": "asc"
   },
   {
    "owner": "asc"
   }
  ]
 }
}

但是没有一个工作。FYI我用的是CouchDB 2.1.0。
我还尝试将"sort":["lastname","firstname","type","owner"]添加到查询中,但仍然收到警告:no matching index found, create an index to optimize query time
我做错了什么?
编辑:我使用PouchDB直接到我的CouchDB服务器(没有同步),如果这可以帮助...

roejwanj

roejwanj1#

您以前创建过索引吗?

this._DB.createIndex({
   index: { fields: ['lastname', 'firstname'] },
   ddoc: "my-index-design-doc"
})

并将其用于您的。找到比use_index: 'my-index-design-doc'

0qx6xfy6

0qx6xfy62#

顺便说一句,请记住,在大型数据库中,查询对性能的影响将是巨大的。操作符$in和$regex将在内存中处理整个数据库,因为它不使用任何索引--至少在最新的CouchDB版本中也不能使用索引:3.0.2.
另一方面,$eq,$gt - $gte,$lt - $lte将在不处理所有数据的情况下进行索引。这就是它的巧妙之处。

相关问题