我正在尝试通过 Mango 有效地查询数据(因为这似乎是我的要求的唯一选择Searching for sub-objects with a date range contains the queried date value),但我什至无法获得一个非常简单的索引/查询对工作:虽然我为查询手动指定了我的索引,但我被告知我的索引“未使用,因为它不包含此查询的有效索引。找不到匹配的索引,创建一个索引以优化查询时间。”
(我在 CouchDB v. 3.0.0 上通过 Fauxton 完成所有这些工作)
假设我的文档如下所示:
{
"tenant": "TNNT_a",
"$doctype": "JobOpening",
// a bunch of other fields
}
所有带有$doctype
“JobOpening”的文档都保证具有tenant
属性。我希望执行的搜索将只针对具有$doctype
“JobOpening”的文档,并且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 执行完整扫描。