Join ArangoDB链接文件

Join ArangoDB链接文件,join,hyperlink,document-database,arangodb,Join,Hyperlink,Document Database,Arangodb,是否可以像OrientDB一样链接ArangoDB中不同集合的文档 在OrientDB中,您可以创建类型为LINK的字段,并指定链接的类型。这将在两个文档之间创建关系 我是否必须在ArangoDB中使用边缘集合来执行此操作 我试图用额外的信息来定义一个主集合和一个辅助集合,以补充主集合。我不希望主集合中的所有数据都在其他实体之间共享 提前感谢。实际上有两种选择: 使用连接 您可以在主文档上定义一个属性,该属性包含标识子文档的信息(例如,通过其\u键),然后在查询中使用AQL连接两个文档: 主文档

是否可以像OrientDB一样链接ArangoDB中不同集合的文档

在OrientDB中,您可以创建类型为
LINK
的字段,并指定链接的类型。这将在两个文档之间创建关系

我是否必须在ArangoDB中使用边缘集合来执行此操作

我试图用额外的信息来定义一个主集合和一个辅助集合,以补充主集合。我不希望主集合中的所有数据都在其他实体之间共享


提前感谢。

实际上有两种选择:

  • 使用连接

    您可以在主文档上定义一个属性,该属性包含标识子文档的信息(例如,通过其
    \u键
    ),然后在查询中使用AQL连接两个文档:

    主文档中x的
    
    滤波器x.x<42
    第二类文件中的y
    过滤器x.sub=y.\u键
    返回合并(x,y)
    

  • 使用边

    可以定义包含文档之间所有“关系”的边集合。边缘文档还可以选择提供有关边缘本身的附加信息

    主文档中x的
    
    设n=邻居(“主文档”、“边集合”,x._id,“任何”);
    返回合并(x,n[0]。顶点);
    

  • 然而,ArangoDB中没有外键约束这样的东西。您可以引用边缘中不存在的文档,也可以在不通知主文档的情况下删除子文档


    第二种方法的好处是,您可以在这些文档之间使用任意数量的边,甚至可以在应用程序运行时决定0、1或更多边,而无需任何修改。对于第一种方法,您必须在开始时通过将属性设置为单个值或一组值来确定这一点。

    第一种方法有什么好处吗?例如,它是否更易于在查询中使用,性能是否不同?