3

FOXX アプリケーションは自動的にインデックスを作成できますか? パフォーマンスのために一意のインデックスとしてフィールドを使用する必要があるコレクション (モデル) があります。事後にハッシュを作成することはできましたが、モデル定義を使用してハッシュを使用できないことを確認したかっただけです。もしそうなら、どこでドキュメントを見つけることができますか?

二次的な質問は、FOXX でインデックスを作成する方法ですか? 私はarangojsでそれを行う方法を知っていますが、FOXXのドキュメントで見つけることができないようです. この質問をスクラッチします。私はこれを理解しました:db.collection.createIndex()。しかし、少年はドキュメントの「その他」セクションの奥深くに隠されていました。

4

1 に答える 1

4

インデックス 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。インデックスが既に存在する場合は何もしません。

于 2016-03-22T15:25:57.193 に答える