为什么查询没有的属性不报错,只说没有数据?

Nebula版本:2.0.1
Nebula-studio版本:2.0.0
描述:
在执行match查询语句时,把e[0].jaccard错写成e[0].jarcard,查不到相关数据,我以为是条件苛刻筛选不出数据。后来,我才发现是写错属性名了。
可否优化这一点》

优化写错的属性名?智能检测匹配正确的属性名吗?

你这个提议更智能,可以下次优化的话,当然很好。如果目前实现这个比较困难的话,可以先报错一下,至少提示一下用户这个属性不存在,及时止损,让用户再次认真检查语句,要不然有时候会出事儿的,本来应该有数据,一查没有数据,想当然的就认为没数据了,用户不会有心思再去检查什么语句的准确性了,请求优化一下。

1 个赞

所以你是希望运行结果去报错 prop 不存在而不是直接查不出来结果对吗

match/with/unwind/return 等语法元素都属于 cypher 语言,cypher 被设计为一种声明式语言,你需要了解声明式语言和命令式语言的区别。
下面是 openCypher9 标准文档里边的一段描述。

Cypher is a declarative graph query language that allows for expressive and efficient querying.
Being a declarative language, Cypher focuses on the clarity of expressing what to retrieve from a graph, not on how to retrieve it. This is in contrast to imperative languages like Java, scripting languages like Gremlin and the JRuby Neo4j bindings.

如果你需要用命令式的语义表达图查询需求,可以考虑 go/lookup 等 nGQL 语法。

(czp@nebula) [nba]> go from "Tim Duncan" over like yield $$.player.nonexist
[ERROR (-1009)]: SemanticError: `$$.player.nonexist', not found the property `nonexist'.

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。

浙ICP备20010487号