索引DB - 复合索引查询,其中一个或另一个匹配

时间:2014-05-05 02:35:46

标签: indexeddb

如果我的术语不正确或者没有很好地解释,请道歉。我用websql数据库创建了一段时间,并希望尝试将其更改为索引数据库。

我创建了这个索引,它允许我找到家庭团队具有特定价值且客场团队是特定值的对象:

objectStore.createIndex("homeAway", ["hometeam", "awayteam"], {unique: false});

所以,如果我正在寻找美国(家庭团队)和俄罗斯(远足)之间的比赛,我会得到我之后的所作所为:

var range = IDBKeyRange.only([hometeam, awayteam]);
var index = objectStore.index("homeAway");

但是,如果我想使用这种.only方法来找到某个球队正在回家的比赛或者离开的话。像这样:

var range = IDBKeyRange.only([hometeam || awayteam]);

如果我无论是回家还是离开俄罗斯,它都可以找到他们在家或离开的地方。这可能吗?

1 个答案:

答案 0 :(得分:4)

一次打开​​和索引两个字段但是不可能为你的案例提供索引解决方案。

您需要为数组字段创建一个新索引,该字段将包含multiEntry属性设置为true的两个团队。

objectStore.createIndex("teams", ["teams"], {unique: false, multiEntry: true});

然后将两个团队作为字符串数组存储到该字段中

var obj = {
    hometeam: "Russia",
    awayteam: "Usa",
    teams: ["Russia", "Usa"]
}

现在,当您在该字段上查询数据库时,您应该获得Russia正在播放的所有游戏:

var index = objectStore.index("teams");
var keyRange = IDBKeyRange.only("Russia");
var cursorRequest = index.openCursor(keyRange);
相关问题