假设我的商店里有3个条目
{
category: "Science",
author: "Charles Darwin",
content: "Lorem ipsum dolor..."
}
{
category: "Science",
author: "Albert Einstein",
content: "sit amet..."
}
{
category: "Philosophy",
author: "Albert Einstein",
content: "consectetur adipisicing elit..."
}
"where category = 'Science'"
,而无需在类别上创建索引?"where category = 'Science' AND author = 'Albert Einstein'"
?"Lorem"
的所有条目是内容字段?答案 0 :(得分:1)
是否有可能获得所有条目“where category ='Science'”,而无需在类别上创建索引?
是:只需遍历整个对象库并手动查找具有该类别的对象。即使您编写了一些便利功能来轻松完成此操作,与使用索引相比,它仍然会非常慢。所以在实践中,你会想要在那里使用索引。
是否有可能获得所有条目“where category ='Science'AND author ='Albert Einstein'?”
是的,您可以使用this question here中描述的“复合索引”。然而,最大的警告是它在IE10中不受支持。如果这是您的应用程序的问题,那么您只能索引单个字段。对于除一个索引字段之外的任何其他约束,您必须遍历所有结果并手动比较。在IndexedDB之上构建了各种各样的库,旨在使这更容易,但我没有使用它们,所以我无法帮助你。无论哪种方式,如果你不能使用复合索引,那将会非常缓慢。
是否可以获取包含单词“Lorem”的所有条目是内容字段?
您可能会注意到此处的模式...是:只需遍历整个对象库并在内容字段中手动查找带有“Lorem”的对象。全文搜索没有内置特殊支持。从理论上讲,可以想象一个构建在IndexedDB之上的全文搜索API(只是跟踪所有单词),但我不确定是否有人已经构建了它(如果他们已经构建它,我不知道如何表现将是)。
或者我应该为这些类型的查询使用不同的数据库
如果你需要做很多像这样的查询(或者,上帝禁止,甚至更复杂的查询),你可以选择使用不同的数据库,然后使用不同的数据库。但是你可能没有这个选择,这取决于你想要完成的任务。