#6144·nebula

MATCH (n:<TAG>) WHERE n.<property> == ... 无法找到具有正确属性值的现有顶点

Author: WYL0622Created Apr 16, 2026Updated May 17, 2026
Labelstype/bugseverity/noneaffects/none

版本信息:

  • NebulaGraph 版本: 3.8.0
  • NebulaGraph Studio 版本:3.10.0
  • 是否使用 Docker?: 是
  • 是否使用官方镜像?: 是
Image

当前现象:

使用 MATCH (n:<TAG>) WHERE n.<property> == "<value>" 模式的查询无法返回具有指定标签和属性值的现有顶点。同样的问题也出现在其他字符串比较操作符上,例如 STARTS_WITH, CONTAINS。 然而:

  • MATCH (n) WHERE id(n) == "<vertex_id>" RETURN n; ==> 可以正常工作。
  • MATCH (n) WHERE id(n) == "<vertex_id>" RETURN n.<TAG>.<property>; ==> 可以正常工作并返回预期的属性值。
  • FETCH PROP ON <TAG> "<vertex_id>"; ==> 可以正常工作并显示属性存在且值正确。
  • MATCH (n:<TAG>) RETURN id(n); ==> 可以正常工作并扫描到顶点 ID。
  • MATCH (n:<TAG>) WHERE n.<property> STARTS_WITH "..."; ==> 失败(返回 no data)。
  • MATCH (n:<TAG>) WHERE n.<property> == ... RETURN n; ==> 失败(返回 no data)。

这表明问题可能专门存在于对全标签扫描 (MATCH (n:<TAG>)) 过程中进行属性过滤 (WHERE) 的环节,而不是数据本身或简单操作的问题。

期望现象:

查询 MATCH (n:<TAG>) WHERE n.<property> == "<value>" RETURN n; 应该返回所有具有指定标签 (<TAG>) 且属性 (<property>) 值与给定值 (<value>) 完全匹配的顶点。

复现步骤:

  • 创建一个空间和一个带有字符串属性的标签(例如 CREATE TAG CASE(case_id string, cluster_id int64);)。

  • 插入一个带有此标签的顶点并设置属性(例如 INSERT VERTEX CASE(case_id, cluster_id) VALUES "K00000000000000000045":("K00000000000000000045", 1);)。

  • 执行 MATCH (n:CASE) WHERE n.case_id == "K00000000000000000045" RETURN n;

    • 期望结果: 返回顶点 ("K00000000000000000045" :CASE{case_id: "K00000000000000000045", ...})
    • 实际结果: 返回 no data
  • 执行 MATCH (n) WHERE id(n) == "K00000000000000000045" RETURN n.CASE.case_id;

    • 期望与实际结果: 返回 K00000000000000000045。
  • 执行 MATCH (n:CASE) WHERE n.case_id STARTS WITH "K0000000000000000004";

    • 期望结果: 如果顶点的属性值以此为前缀,应返回该顶点。
    • 实际结果: 返回 no data