在 ArangoDB 中按边属性过滤顶点

Filtering Vertices by Edge-Attribut in ArangoDB

我是ArangoDB的新手,尝试做一个时空数据库。对于顶点 "Parz1",我连接了两个 GeoJSON。我的目标是过滤几何顶点,它的边中的键 "Ende" 的值为“9999”。我在文档中找不到有关如何按边值过滤顶点的内容。感谢您的帮助!

第一个顶点:

  Document: Parzelle/Parz1
    _rev:83054176547
    _key:Parz1
    {
      "Nummer": "1",
      "Gmd": "Muttenz"
    }

几何顶点:

    Document: Geometrie/Geom1
    _rev:83050703139
    _key:Geom1
    {
      "type": "Polygon",
      "coordinates": [
        [
          [
            600000,
            200000
          ],
          [
            600000,
            200002
          ],
          [
            600002,
            200002
          ],
          [
            600002,
            200000
          ],
          [
            600000,
            200000
          ]
        ]
      ]
    }
Document: Geometrie/Geom4
_rev:83051424035
_key:Geom4
{
  "type": "Polygon",
  "coordinates": [
    [
      [
        600000,
        200000
      ],
      [
        599998,
        200000
      ],
      [
        600000,
        200002
      ],
      [
        600002,
        200002
      ],
      [
        600002,
        200000
      ],
      [
        600000,
        200000
      ]
    ]
  ]
}

和边缘:

Edge: hatGeom/37050525987
_rev:83056470307
_key:37050525987
_from:Parzelle/Parz1
_to:Geometrie/Geom1
{
  "Start": "1950",
  "Ende": "2010"
}

Edge: hatGeom/37067237667
_rev:83056797987
_key:37067237667
_from:Parzelle/Parz1
_to:Geometrie/Geom4
{
  "Start": "2011",
  "Ende": "9999"
}

在 ArangoDB 2.8 中,我们提供了一个新的 Traversal and pattern matching api;然后,您可以有效地按边和顶点进行过滤:

FOR v, e, p IN 
  1..3 OUTBOUND 'vertexCollection/startVertex'
  GRAPH 'geometryGraph' 
    FILTER p.edges[1].start > 1950 RETURN v

您甚至可能想使用 Geo index 来查找图遍历的开始匹配:

FOR startVertex IN WITHIN(vertexCollection, @latitude, @longitude, @limit) 
  FOR v, e, p IN 
    1..3 OUTBOUND startVertex
    GRAPH 'geometryGraph' 
      FILTER p.edges[1].start > 1950 RETURN v