【发布时间】:2021-03-19 10:23:24
【问题描述】:
我正在尝试通过 Mango 有效地查询数据(鉴于我的要求 Searching for sub-objects with a date range containing the queried date value,这似乎是唯一的选择),但我什至无法让一个非常简单的索引/查询对工作:虽然我指定我的索引手动用于查询,我被告知我的索引“未使用,因为它不包含此查询的有效索引。找不到匹配的索引,创建一个索引以优化查询时间。”
(我在 CouchDB v. 3.0.0 上通过 Fauxton 完成所有这些工作)
假设我的文档如下所示:
{
"tenant": "TNNT_a",
"$doctype": "JobOpening",
// a bunch of other fields
}
所有带有“JobOpening”$doctype 的文档都保证具有tenant 属性。我希望执行的搜索将永远只针对具有“JobOpening”的$doctype 的文档,并且在查询时将始终提供tenant 选择器。
这是我配置的测试索引:
{
"index": {
"fields": [
"tenant",
"$doctype"
],
"partial_filter_selector": {
"\\$doctype": {
"$eq": "JobOpening"
}
}
},
"ddoc": "job-openings-doctype-index",
"type": "json"
}
这是查询
{
"selector": {
"tenant": "TNNT_a",
"\\$doctype": "JobOpening"
},
"use_index": "job-openings-doctype-index"
}
为什么没有用于查询的索引?
我尝试过不使用部分索引,并且我认为 $doctype 转义在必要的地方正确完成,但似乎没有什么可以阻止 CouchDB 执行完整扫描。
【问题讨论】:
标签: couchdb couchdb-mango