Neo4j 最近推出了call db.labels();
,它可以生成数据库中使用的所有标签,大概不需要进行全面扫描。
属性键是否有类似的东西,即一些返回数据库中使用的所有键的指令,无论节点如何?标签上是否有参数化的东西,即返回至少一个具有给定标签的节点中使用的所有键?
同样,我知道如何使用完整扫描进行任一查询,但恐怕它们效率不高。我知道这样的函数必须是 Web 浏览器用来在左列上显示所有属性键的函数。
小智 8
尝试下面的查询,这将返回图中的所有标签以及每个标签下节点的属性:
MATCH(n)
WITH LABELS(n) AS labels , KEYS(n) AS keys
UNWIND labels AS label
UNWIND keys AS key
RETURN DISTINCT label, COLLECT(DISTINCT key) AS props
ORDER BY label
Run Code Online (Sandbox Code Playgroud)
有一个名为的APOC 程序apoc.meta.data
。有关此程序的 APOC 文档说:
apoc.meta.data
:检查图形的子集以提供表格元信息。
call apoc.meta.data();
Run Code Online (Sandbox Code Playgroud)
产生:
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?"label" ?"property"?"count"?"unique"?"index"?"existence"?"type" ?"array"?"sample"?"leftCount"?"rightCount"?"left"?"right"?"other"?"otherLabels"?"elementType"?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?"User" ?"age" ?0 ?false ?false ?false ?"INTEGER"?false ?null ?0 ?0 ?0 ?0 ?[] ?[] ?"node" ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?"Product"?"name" ?0 ?false ?false ?false ?"STRING" ?false ?null ?0 ?0 ?0 ?0 ?[] ?[] ?"node" ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?"Product"?"price" ?0 ?false ?false ?false ?"STRING" ?false ?null ?0 ?0 ?0 ?0 ?[] ?[] ?"node" ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?"Product"?"color" ?0 ?false ?false ?false ?"STRING" ?false ?null ?0 ?0 ?0 ?0 ?[] ?[] ?"node" ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
过滤的一种方法是执行以下操作:
call apoc.meta.data() yield label, property
with ['Product', 'OtherLabel'] as labels, property, label where label in labels
return property, label
Run Code Online (Sandbox Code Playgroud)
上述查询返回Product
和OtherLabel
标签的结果。
归档时间: |
|
查看次数: |
2235 次 |
最近记录: |