FOXX应用程序能自动创建索引吗?我有一个集合(模型),在这里我需要一个字段作为唯一的性能索引。我可以在这个事实之后创建哈希,但我只是想确保使用模型定义时它是不可用的。如果是,在哪里可以找到文档?
第二个问题是如何在FOXX中创建索引?我知道如何在arangojs中这样做,但我似乎在FOXX文档中找不到它。解决这个问题。我想出了这个问题: db.collection.createIndex()。但是男孩就隐藏在文件的“错读”部分。
发布于 2016-03-22 15:25:57
索引API不是Foxx的一部分,而是一般的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.xFoxx提供了集合和文档(即存储在这些集合中的数据集)的包装器,分别称为存储库和模型。每个存储库代表一个集合,每个模型代表一个文档。ArangoDB 3.0将提供一个新的、简化的API,通过鼓励您使用ArangoDB已经提供的底层集合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将什么也不做。
https://stackoverflow.com/questions/36090466
复制相似问题