Open3

firebase index

katayama8000katayama8000

単一フィールド インデックス

  • デフォルトで自動的に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とか使えるようになる

katayama8000katayama8000

複合インデックス

citiesRef.where("country", "==", "USA").orderBy("population", "asc")

例えば、上のようなクエリを発行したい場合に必要

cities   ↑ (or ↓) country, ↑ population	コレクション

populationのorderを変えたい場合は、追加でインデックスが必要

citiesRef.where("country", "==", "USA").orderBy("population", "desc")
cities   ↑ (or ↓) country, ↓ population	コレクション