【问题标题】:Retrieving the documents connected this vertex检索连接此顶点的文档
【发布时间】:2018-01-23 09:30:20
【问题描述】:

我想检索连接到顶点的所有文档。

首先我的想法是通过使用存储在其中的信息来找到一个顶点。我可以通过全文查询来做到这一点:

FOR doc IN spec
FILTER doc.serial_no == '"12345abc"'
RETURN doc

RESULT:
[
  {
    "_key": "3834670", 
    "_id": "spec/3834670", 
    "_rev": "_WP3-fvW---",
    "type": "spec-type-545",
    "name": "spec-name-957", 
    "serial_no": ""12345abc""
  }
]

现在我想查找附加到该顶点的所有文档。我该怎么做?

【问题讨论】:

    标签: arangodb aql


    【解决方案1】:

    假设您将顶点的连接保存到边缘集合中的附加文档,您可以使用遍历。

    遍历从一个特定文档 (startVertex) 开始,并沿着连接到该文档的所有边。对于这些边缘所针对的所有文档(顶点),它将再次跟随连接到它们的所有边缘,依此类推。

    在您的情况下,startVertex 是'spec/3834670'。 IN [min[..max]] 定义遍历的深度,不指定此选项将使用默认深度 1。edgeCollection1, ..., edgeCollectionN 是所有正在使用的边缘集合的列表。

    FOR v IN [min[..max]] ANY 'spec/3834670'
      edgeCollection1, ..., edgeCollectionN
      RETURN v._key
    

    这在AQL Manual 中有记录。

    【讨论】:

    • 您可以通过嵌套 for 循环在一个查询中实现此目的:FOR doc IN spec FILTER doc.serial_no == '"12345abc"' FOR v IN [min[..max]] ANY doc._id edgeCollection1, ..., edgeCollectionN RETURN v._key 如果多个元素将通过第一个过滤器,则将为找到的每个顶点运行遍历。
    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2016-05-26
    • 2015-08-23
    • 1970-01-01
    相关资源
    最近更新 更多