Arangodb 如何在AQL中使用邻居?

Arangodb 如何在AQL中使用邻居?,arangodb,Arangodb,我是ArangoDB的新手,并且已经是一个越来越多的粉丝了。在许多事情中,我们需要将多对多关系转换为图形,并在其中高效地查询。 然而,我似乎无法复制邻居的行为,如中所述 在“使用边集合”下 插入数据并运行后: FOR b IN books RETURN { book: b, authors: NEIGHBORS(books, written, b._id, 'inbound') } [ { "book" : { "_id" : "books/10519631898915"

我是ArangoDB的新手,并且已经是一个越来越多的粉丝了。在许多事情中,我们需要将多对多关系转换为图形,并在其中高效地查询。 然而,我似乎无法复制邻居的行为,如中所述 在“使用边集合”下

插入数据并运行后:

FOR b IN books RETURN { book: b, authors: NEIGHBORS(books, written, b._id, 'inbound') }
[
  {
    "book" : {
      "_id" : "books/10519631898915",
      "_key" : "10519631898915",
      "_rev" : "10519631898915",
      "title" : "The beauty of JOINS"
    },
    "authors" : [ ]
  }
]
空作者列表!我试过这样做:

FOR b IN books RETURN { book: b, authors: NEIGHBORS(authors, written, b._id, 'inbound') }
[
  {
    "book" : {
      "_id" : "books/10519631898915",
      "_key" : "10519631898915",
      "_rev" : "10519631898915",
      "title" : "The beauty of JOINS"
    },
    "authors" : [
      "authors/10519474612515",
      "authors/10519475792163"
    ]
  }
]
返回_id列表。这些都没有像烹饪书中那样返回我需要的东西,这是预期的边/顶点结构。 (所有测试均已在2.6.9中进行)

如何使用邻居,以及我如何在纯AQL中实现我的目标?
是否有邻居(和其他图形AQL功能)的标准文档,其中包含每个参数的描述和类型以及返回值?

对,我找到了一个解决方案:

FOR p IN PATHS(books, written, 'inbound') 
RETURN p.destination
结果:

Warnings:

[1577], 'collection 'books' used as expression operand'

Result:

[
  {
    "_id": "books/10519631898915",
    "_rev": "10519631898915",
    "_key": "10519631898915",
    "title": "The beauty of JOINS"
  },
  {
    "_id": "authors/10519474612515",
    "_rev": "10519474612515",
    "_key": "10519474612515",
    "name": {
      "first": "John",
      "last": "Doe"
    }
  },
  {
    "_id": "authors/10519475792163",
    "_rev": "10519475792163",
    "_key": "10519475792163",
    "name": {
      "first": "Maxima",
      "last": "Musterfrau"
    }
  }
]
它至少获得了目标顶点,但它似乎不正确,因为我得到了一个警告,并且源顶点被作为目标包含。
欢迎进一步阐述和建议。

您是否尝试过邻居的
includeData
选项

FOR b IN books RETURN { book: b, authors: NEIGHBORS(authors, written, b._id, 'inbound', [], {includeData: true}) }
这在我的测试中奏效了。 这将比大型数据集上的路径(路径计算的无关信息要多得多)性能更好

注意:空数组
[]
用于定义只应遵循的边。对于空数组,我们遵循所有边,但您也可以遵循特殊边f.e.
{label:“writed”}
而不是
[]

更新(2017):AQL 3.x不再支持邻居

而不是

NEIGHBORS(books, written, b._id, 'inbound')
您可以编写一个子查询:

(FOR v IN 1..1 INBOUND b written RETURN v)

是的,在文档章节AQL->Functions->Graph Functions中,请参阅:cheers。那个页面并没有出现在谷歌上,但现在我在哪里可以找到:-)>Docs>Manual,如果你想知道的话。谷歌可能是次优的,因为它有时会忽略重要的事情。