NebulaGraph数据库:如何获取每个Tag下的所有顶点?
NebulaGraph获取指定Tag下所有顶点的正确方法
错误原因说明
- 你使用的
FETCH prop on player * yield properties(vertex)语法错误:FETCH语句必须指定具体的顶点ID,不能用*匹配所有顶点。 MATCH (v:player) return v报错是因为NebulaGraph默认限制全量扫描操作,必须显式指定LIMIT来避免无限制的资源占用。
正确实现方法
方法1:MATCH语句配合LIMIT
如果知道目标Tag下的顶点总数,直接指定对应数值;不确定的话,设置一个足够覆盖数据量的LIMIT值(根据实际情况调整):
MATCH (v:player) RETURN v LIMIT 10000;
若需要返回顶点的属性集合,可改为:
MATCH (v:player) RETURN properties(v) LIMIT 10000;
方法2:LOOKUP语句(推荐)
LOOKUP是NebulaGraph专为遍历指定Tag/Edge Type所有元素设计的语句,无需强制指定LIMIT(数据量极大时仍建议分段获取):
LOOKUP ON player YIELD properties(vertex);
如果需要同时获取顶点ID和属性:
LOOKUP ON player YIELD id(vertex), properties(vertex);
大数据量分页建议
当Tag下顶点数量极多时,全量返回会影响性能,建议用SKIP+LIMIT分批获取:
-- 第一页,取前1000条 LOOKUP ON player YIELD id(vertex), properties(vertex) SKIP 0 LIMIT 1000; -- 第二页,跳过前1000条取接下来的1000条 LOOKUP ON player YIELD id(vertex), properties(vertex) SKIP 1000 LIMIT 1000;
内容的提问来源于stack exchange,提问作者Cooper
相关产品推荐
相关产品推荐

