インデックス API は、Foxx API の一部ではなく、一般的な ArangoDB API (Foxx は、ArangoDB がマイクロサービスを構築および管理するために提供する単なるフレームワークです) であり、ArangoDB のドキュメント ( https://docs.arangodb.com/IndexHandling/ ) で見つけることができます。 WorkingWithIndexes.html
'use strict';
var myCollection = applicationContext.collection('my-data');
myCollection.ensureIndex({type: 'hash', fields: ['a', 'b'], unique: true});
ArangoDB 2.x では、Foxx は、それぞれリポジトリとモデルと呼ばれるコレクションとドキュメント (つまり、これらのコレクションに格納されたデータセット) のラッパーを提供します。各リポジトリはコレクションを表し、各モデルはドキュメントを表します。ArangoDB 3.0 は、ArangoDB がすでに提供している基礎となるコレクション API を使用することを奨励することで、この追加の複雑さを取り除く新しい簡素化された API を提供します。
Foxx リポジトリでインデックス固有のメソッド (geo インデックスを使用したコレクションの geo クエリなど) を使用するには、次のindexes
ように追加のプロパティを使用してリポジトリを定義する必要があります。
'use strict';
var Foxx = require('org/arangodb/foxx').Repository;
var MyModel = Foxx.Model.extend({/* ... */});
var MyRepo = Foxx.Repository.extend({
indexes: [
// same syntax as collection.ensureIndex:
{type: 'hash', fields: ['a', 'b'], unique: true}
]
});
var repo = new MyRepo(applicationContext.collection('my-data'), {
model: MyModel
});
リポジトリがインスタンス化される (つまりnew MyRepo(/* ... */)
、呼び出される) と、Foxx は必要に応じてインデックスが作成されるようにします。
https://docs.arangodb.com/Foxx/Develop/Repository.html#defining-indexesのドキュメントを参照してください。
または、Foxx リポジトリを使用したくない場合は、上記の通常のインデックス API を使用して、コレクションを作成した後、セットアップ スクリプトでインデックスを定義するだけです。どちらの方法でも、コードを複数回実行することを心配する必要はありませんensureIndex
。インデックスが既に存在する場合は何もしません。