You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

nGQL查询能否引用双标签VID?如何用VID统计边实例数?

关于nGQL中直接通过目标顶点VID过滤边的查询方法

问题背景

我已创建两个标签的顶点实例:

INSERT VERTEX Topic (topicId, first_proposed, approval_status, followers, tagged_tally) VALUES 9999:("Sample topic id", TIMESTAMP(), "Pending", 10, 20);

INSERT VERTEX Post(text_added, last_updated, author, postId, creation_date, shared_total, flagged_total, views, total_likes, is_a_repost, post_format) VALUES 4444: ("Sample text", timestamp(), "John Doe", 1234, TIMESTAMP(), 0, 0, 0, 0, false, "some format");

并多次执行以下语句,在VID为4444的Post顶点和VID为9999的Topic顶点间插入带不同时间戳的is_tagged边:

INSERT EDGE is_tagged (when_tagged) VALUES 4444 -> 9999:(timestamp('2023-06-11T02:18:43'));

目前我通过Topic的topicId属性过滤来统计这类边的总实例数:

GO FROM 4444 OVER is_tagged WHERE $$.Topic.topicId == "Sample topic id" YIELD edge AS e | GROUP BY $-.e YIELD COUNT(*) AS number;

但希望直接引用Topic的VID 9999进行过滤,而非使用属性值,请问该如何编写查询?

解决方案

在nGQL中,你可以直接通过$$._id获取目标顶点的VID作为过滤条件,也可以用TO关键字直接限定目标顶点,两种方式都能实现需求:

方式一:通过$$._id过滤

GO FROM 4444 OVER is_tagged WHERE $$._id == 9999 YIELD edge AS e | GROUP BY $-.e YIELD COUNT(*) AS number;

方式二:用TO关键字直接限定目标顶点(更简洁)

GO FROM 4444 OVER is_tagged TO 9999 YIELD COUNT(edge) AS number;

说明

  • $$._id是nGQL的内置变量,代表当前遍历到的目标顶点的VID,无需关联具体标签即可直接使用。
  • 使用TO关键字可以在GO语句中直接指定目标顶点的VID,省略额外的过滤条件,简化查询逻辑。

内容的提问来源于stack exchange,提问作者Toby Derrum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:12:47