我刚刚开始学习Neo4j,我偶然发现了一些问题。
看起来Neo4j使用强类型而没有动态类型转换,即RETURN '17' = 17
导致false
和RETURN '10' > 5
导致语法错误。
对于NoSQL和无架构数据库来说,实现这种严格的行为对我来说非常奇怪。即使是强类型的基于模式的数据库(如MySQL和Postgresql)也允许在语句中进行类型转换。这是Neo4j背后的意识形态吗?如果是这样的话?
答案 0 :(得分:1)
在Neo4j 2.1中添加了类型转换功能,例如toInt
和toFloat
来处理转换。
在2.0.x中,您可以在另一个方向使用str(17) = str('17')
。
Neo4j本身对结构信息不太严格。但对价值观更加严格。即您放入属性的值将完全返回,您必须自己将其转换为其他类型。其中一些源于其Java历史,并且已经因为密码而松动。