2016-03-18 9 views
3

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

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

答えて

4

インデックスAPIは、フォックスのAPIの一部が、一般的ArangoDBのAPIではありません(フォックスは単にArangoDBが建物やmicroservicesを管理するために提供するフレームワークである)と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を提供します。

'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 
}); 

:あなたがそうのような追加のindexesプロパティでリポジトリを定義する必要があります(地理インデックス付きコレクションの地理クエリなど)フォックスリポジトリにインデックス固有のメソッドを使用するためには

リポジトリがインスタンス化された場合(つまり、new MyRepo(/* ... */)が呼び出された場合)、Foxxは必要に応じてインデックスが作成されるようにします。

https://docs.arangodb.com/Foxx/Develop/Repository.html#defining-indexesのドキュメントを参照してください。

また、Foxxリポジトリを使用したくない場合は、上記の通常のインデックスAPIを使用して、コレクションを作成した後にセットアップスクリプトでインデックスを定義することができます。どちらの方法でも、コードの実行を何度も心配する必要はありません。ensureIndexは、インデックスがすでに存在する場合は何も行いません。

関連する問題