Open3
firebase index
インデックスのタイプ
- 単一フィールド インデックス
- 複合インデックス
単一フィールド インデックス
- デフォルトで自動的にfirebaseが付与してくれる
var citiesRef = db.collection("cities");
citiesRef.doc("SF").set({
name: "San Francisco", state: "CA", country: "USA",
capital: false, population: 860000,
regions: ["west_coast", "norcal"] });
citiesRef.doc("LA").set({
name: "Los Angeles", state: "CA", country: "USA",
capital: false, population: 3900000,
regions: ["west_coast", "socal"] });
citiesRef.doc("DC").set({
name: "Washington, D.C.", state: null, country: "USA",
capital: true, population: 680000,
regions: ["east_coast"] });
citiesRef.doc("TOK").set({
name: "Tokyo", state: null, country: "Japan",
capital: true, population: 9000000,
regions: ["kanto", "honshu"] });
citiesRef.doc("BJ").set({
name: "Beijing", state: null, country: "China",
capital: true, population: 21500000,
regions: ["jingjinji", "hebei"] });
cities ↑ name コレクション
cities ↑ state コレクション
cities ↑ country コレクション
cities ↑ capital コレクション
cities ↑ population コレクション
cities ↓ name コレクション
cities ↓ state コレクション
cities ↓ country コレクション
cities ↓ capital コレクション
cities ↓ population コレクション
cities array-contains regions コレクション
これがあるので、普通にwhere
とか使えるようになる
複合インデックス
citiesRef.where("country", "==", "USA").orderBy("population", "asc")
例えば、上のようなクエリを発行したい場合に必要
cities ↑ (or ↓) country, ↑ population コレクション
populationのorderを変えたい場合は、追加でインデックスが必要
citiesRef.where("country", "==", "USA").orderBy("population", "desc")
cities ↑ (or ↓) country, ↓ population コレクション