我导入了一个文档列表(在名为“assemblies”的集合中)。其中一个属性是“parent_id”。 基于此,我想构建图形,该图形由该属性隐式描述。
"id","name","parent_id"
"30","Top level"
"30.1","30.1 Child 1","30"
"30.2","30.2 Child 2","30"
这是查询,我希望能够为我提供创建边集合的信息(名为“contains”,因此它是从父级到子级):
FOR assy IN assemblies
LET parent = (
FOR parent IN assemblies
FILTER parent.id == assy.parent_id
RETURN parent
)
RETURN {_from: parent._key, _to: assy._key}
我做错了什么?你能给我一个插入边缘的完整查询吗?
答案 0 :(得分:2)
问题是parent
中子查询的结果是数组而不是文档。但实际上并不需要子查询。您还可以执行join,它应该提供更好的性能并且更易于阅读。
对于边缘的_id
和_key
字段,您还必须使用_from
代替_to
的值。
以下查询完全符合您的要求。
FOR assy IN assemblies
FOR parent IN assemblies
FILTER parent.id == assy.parent_id
INSERT {_from: parent._id, _to: assy._id} IN contains
RETURN NEW
节点:RETURN NEW
是可选的。您可以检查导入是否成功。有了更多的数据,我就放弃了。