我有一个带有元素的pouchdb文档数据库,如以下示例所示
{
"_id": "course_2_34E82B43-3F14-2FF7-9D37-81B293D2990F",
"_rev": "18-8f8f2426a12739ffb9f3bebe27d5f158",
"data": {
"name": "HACCP formation",
"isPeriodValidity": true,
"validityMonths": 2,
"minNumEmployees": 4,
"amount": 50,
"isByCompany": true,
"activities": [
"03E0E23F-58C4-3747-A441-6CF8DFE7EF75",
"CB88B914-281A-6FC2-8A5A-10322AB93B1F"
],
"services": [],
"offers": [],
"offerServices": [],
"unmanagedServices": []
}
}
{
"_id": "document_2_24A7DB52-031E-338A-941F-450CC4760E49",
"_rev": "12-3a704b186d6d1f5490756a983ccdc526",
"data": {
"name": "MMC",
"isPeriodValidity": true,
"validityMonths": 3,
"minNumEmployees": 0,
"amount": 300,
"resources": [],
"activities": [
"B52ED0EB-22F7-800A-B678-D8E36C58354E"
],
"offers": [],
"offerServices": [],
"unmanagedServices": []
}
}
{
"_id": "resource_2_6CFE5DA9-4756-0933-B11E-1E6C546F1AB4",
"_rev": "1-0e30424758084f2d1acf042ba8c5fb19",
"data": {
"path": "aa",
"description": "aa"
}
}
我可以通过查看_id前缀(课程,文档,资源......)来区分元素类型。 现在我想使用优化查询来获取所谓类型课程的所有元素。 一种选择可以是使用芒果查询,如:
{
"selector": {
"_id": {
"$regex": "course_"
}
}
}
但是通过文档here,似乎更优化的选项是将allDocs函数与" startkey"结合使用。和" endkey"。例如:
database.allDocs({
include_docs: true,
startkey: "course_",
endKey: "course_\uffff"
})
通过调用此函数,我希望只获得"课程"元素,因为他们有"当然_"在_id字段中。相反,我似乎基本上得到了db上的所有可用文档。
我在调试会话中添加了一个图像,我希望能够更好地解释这种情况。您可以看到传递给数据库的 searchTerm 变量,以及执行调用的代码和结果的一部分。正如您所看到的,只有前4个结果与搜索键匹配,而以下内容似乎是数据库中的随机内容。
你能解释一下为什么吗?
答案 0 :(得分:2)
你的" endkey"属性是" endKey"。你必须确保不要大写" key"。我多次犯了同样的错误。