首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ArangoDB FOXX中定义索引?

如何在ArangoDB FOXX中定义索引?
EN

Stack Overflow用户
提问于 2016-03-18 17:15:33
回答 1查看 214关注 0票数 3

FOXX应用程序能自动创建索引吗?我有一个集合(模型),在这里我需要一个字段作为唯一的性能索引。我可以在这个事实之后创建哈希,但我只是想确保使用模型定义时它是不可用的。如果是,在哪里可以找到文档?

第二个问题是如何在FOXX中创建索引?我知道如何在arangojs中这样做,但我似乎在FOXX文档中找不到它。解决这个问题。我想出了这个问题: db.collection.createIndex()。但是男孩就隐藏在文件的“错读”部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 15:25:57

索引API不是Foxx的一部分,而是一般的ArangoDB API (Foxx只是ArangoDB为构建和管理微服务提供的框架),可以在ArangoDB文档:https://docs.arangodb.com/IndexHandling/WorkingWithIndexes.html中找到。

代码语言:javascript
复制
'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属性定义存储库,如下所示:

代码语言:javascript
复制
'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将什么也不做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36090466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档