Nosql 数据库查找+$中:未找到匹配的索引
我有一个名为“tileId”的非唯一辅助密钥,我想用它进行搜索。因此,我创建了以下索引:Nosql 数据库查找+$中:未找到匹配的索引,nosql,couchdb,pouchdb,Nosql,Couchdb,Pouchdb,我有一个名为“tileId”的非唯一辅助密钥,我想用它进行搜索。因此,我创建了以下索引: this.pouchDB.createIndex({ index: { fields: ['tileId'] } }); 当我使用以下选择器时,它工作正常: selector: {tileId: 1234567} 但是,当我尝试使用以下选择器搜索值列表时,它会起作用,但会给出一个关于找不到匹配索引的警告: selector: {tileId: {$in, [
this.pouchDB.createIndex({
index: {
fields: ['tileId']
}
});
当我使用以下选择器时,它工作正常:
selector: {tileId: 1234567}
但是,当我尝试使用以下选择器搜索值列表时,它会起作用,但会给出一个关于找不到匹配索引的警告:
selector: {tileId: {$in, [1234567, 2345678]}}
selector: {tileId: {$in, [1234567, 2345678]},
category: {$in, [list of categories]},
subcategory: {$in, [list of subcategories]}
}
它可行吗?如何可行据我所知,PockDB Find的当前实现仅使用连续键的索引(在本例中为
tileId
值)。如果指定一个查询,通过tileId
查询一组不同的记录,例如在子句中使用$或或$,则(非常基本的)查询计划器选择根本不使用tileId
作为索引扫描的基础
我认为您最好发出多个查询,而不是在tileId
中使用$in
。如果具有指定的tileId
的文档数量适中,则附加过滤器可能相对便宜。好的,谢谢您的回答。不过,我希望既然他们有这个“$in”限定符,就应该有一种优雅地使用它的方法。您认为,有没有一种方法可以通过map/reduceapi使其工作?