我尝试在DB
中的所有标签上创建索引这就是我所拥有的:
CALL db.labels()
YIELD label
CREATE INDEX ON :label(objectID)
但这会出错:
输入无效' N':预期&#p; P' (第3行,第15栏(抵消:44)) " CREATE INDEX ON:label(webint_keys_objectID)"
答案 0 :(得分:1)
您不能在匹配,创建或架构操作中为标签使用变量。您必须使用实际标签进行这些操作。
有一种方法可以使用apoc.schema.assert()
使用call db.labels() yield label
with label, ['objectID'] as indexProp
with collect(label) as labels, collect(indexProp) as indexProps
with apoc.map.fromLists(labels, indexProps) as indexMap
call apoc.schema.assert(indexMap,{}) yield label, key, unique, action
return label, key, unique, action
添加带有动态标签的索引,但是它会删除assert()调用中不存在的所有索引和约束。这需要将db.labels()中的标签转换为映射的键,因此,您需要其他APOC过程进行该操作。
由于索引和约束只需要创建一次,因此通常最好手动执行这些操作。
但如果你确实需要这样的查询,这应该可以解决问题:
forEach { ... }