我正在努力做一些应该很容易但对我来说毫无意义的事情,我在数据库中有这两个文件:
{ "name": "foo", "type": "typeA" },
{ "name": "bar", "type": "typeB" }
我将此发布到_find:
{
"selector": {
"type": "typeA"
},
"sort": ["name"]
}
哪个按预期工作但我收到警告说没有匹配的索引,所以我尝试将以下各种组合发布到_index,这没有区别:
{
"index": {
"fields": ["type"]
}
}
{
"index": {
"fields": ["name"]
}
}
{
"index": {
"fields": ["name", "type"]
}
}
如果我按名称删除排序并仅对其类型编制索引,除非它没有排序,否则这是一个限制,这是一个限制,因为它与couchdbs'芒果的实施还是我错过了什么?
使用视图和地图功能工作正常,但我很好奇芒果在这里做什么。
答案 0 :(得分:0)
只有类型索引,我认为它通常几乎同样有效,除非你有很多类型的文件(因为它必须在内存中进行排序阶段。)
但是由于字段是有序的,所以有必要这样做:
{
"index": {
"fields": ["type", "name"]
}
}
为每个已按名称排序的类型提供此索引的连续切片。但查询计划程序可能无法确定此索引是否适用。
例如,当前pouchdb-find(应该类似)需要更复杂但等效的查询:
{
selector: {type: 'typeA', name: {$gte: null} },
sort: ['type','name']
}
选择此索引并构建一个不会在内存中构建任何步骤的计划。