簡體   English   中英

如何在ArangoDB FOXX中定義索引?

[英]How to define an index in ArangoDB FOXX?

FOXX應用程序可以自動創建索引嗎? 我有一個集合(模型),我需要一個字段作為性能的唯一索引。 我可以在事后創建哈希,但我只是想確保使用模型定義不可用。 如果是這樣,我在哪里可以找到文檔?

第二個問題是如何在FOXX中創建索引? 我知道如何在arangojs中做到這一點,但我似乎無法在FOXX文檔中找到它。 抓住這個問題。 我想出來了:db.collection.createIndex()。 但男孩深藏在文檔的“misc”部分。

索引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將提供一個新的簡化API,通過鼓勵您使用ArangoDB已經提供的底層集合API來消除這種額外的復雜性。

為了在Foxx存儲庫上使用特定於索引的方法(比如使用地理索引的集合的地理查詢),您需要使用其他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將不執行任何操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM