代码之家  ›  专栏  ›  技术社区  ›  Anton Pilyak

pouchdb find+$in:未找到匹配索引

  •  0
  • Anton Pilyak  · 技术社区  · 7 年前

    我有一个名为“tileId”的辅助非唯一密钥,我想用于搜索。因此,我创建了以下索引:

    this.pouchDB.createIndex({
      index: {
              fields: ['tileId']
             }
      });
    

    当我使用以下选择器时,它可以正常工作:

    selector: {tileId: 1234567}
    

    但是,当我尝试使用以下选择器搜索值列表时,它会起作用,但会发出警告,说明找不到匹配的索引:

    selector: {tileId: {$in, [1234567, 2345678]}}
    
    1. 我做错了什么?我应该更改什么来查询文档,其中(tileId===1234567)或(tileId===2345678)或(tileId===。。。数组中还有其他值吗?
    2. 最后,我想在这个查询中添加几个类似的字段,得到如下结果:

      selector: {tileId: {$in, [1234567, 2345678]},
                 category: {$in, [list of categories]},
                 subcategory: {$in, [list of subcategories]}
                }
      

      是可行的吗?怎么做?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Will Holley    7 年前

    据我所知,PouchDB Find的当前实现只对连续键使用索引( tileId 本例中的值)。如果指定一个查询,该查询通过 蒂莱德 例如,使用 $or $in 子句,查询计划器选择不使用 蒂莱德 作为索引扫描的基础。

    我认为您最好发出多个查询,而不是使用 美元 对于 蒂莱德 . 如果指定了 蒂莱德 是谦虚的。

    推荐文章