JSONフィールドの索引付け

JSONフィールドに対して索引を作成できます。索引を作成するには、索引付けするJSONフィールドのデータ型を定義する必要があることを除き、他の索引と同様に指定します。

索引付けできるJSONフィールドのデータ型にはいくつかの制限があることに注意してください。詳細は、JSON索引を参照してください。

索引を作成するには、まず表を作成します。

CREATE Table JSONPersons (
    id INTEGER,
    person JSON,
    PRIMARY KEY (id)
) 

索引を作成するには、ドット表記法を使用して索引付けするJSONフィールドを指定する必要があります。次のような表の行があるとします。

  "id":1,
  "person" : {
      "firstname":"David",
      "lastname":"Morrison",
      "age":25,
      "income":100000,
      "lastLogin" : "2016-10-29T18:43:59.8319",
      "address":{"street":"150 Route 2",
                 "city":"Antioch",
                 "state":"TN",
                 "zipcode" : 37013,
                 "phones":[{"type":"home", "areacode":423, 
                            "number":8634379}]
                },
      "connections":[2, 3],
      "expenses":{"food":1000, "gas":180}
  } 

表をストアに追加した後、次のようなJSONフィールドの1つに索引を作成できます。

CREATE INDEX idx_json_income on JSONPersons (person.income AS integer)

JSON索引を使用してデータを取得するには、JSONフィールドを識別するためにドット表記法を使用して索引キーを作成します。次に、Store.indexIterator()を使用して、索引キーに一致する表の行にアクセスします。たとえば、person.incomeフィールドが100000の行をすべて取得するには、次のようにします。

function readIndex(store) {
   var obj = {'person.income':100000};

   store.indexIterator('JSONPersons', 'idx_json_income',
        {indexKey : obj},
        function (err, iterator) {
              iterator.forEach(function (err, currentRow) {
                 console.log(currentRow.row);
              });
        }
    );
}