0

与运算符结合使用时,尝试使用 default-false-if-missing 语法 ( WHERE node.property? = ...) 似乎不起作用IN

$ start n=node:node_auto_index(lc_name="aspirin")
> match n--a--o
> where n.isProcPhen? IN [true, false]  // n doesn't have this property
> return count(o);

=> count(o):
=> 0

但是如果我不使用IN,那么它似乎可以正常工作:

$ start n=node:node_auto_index(lc_name="aspirin")
> match n--a--o
> where n.isProcPhen? = false
> return count(o);

=> count(o):
=> 5729

还有其他方法可以做到这一点,还是我不走运?

4

1 回答 1

3

5729 个结果中的任何一个实际上是否具有此属性 isProcPhen?

如果他们没有该属性,那么查询会按预期工作,因为 n.isProcPhen? = false 将评估为 true,因为缺少该属性

http://docs.neo4j.org/chunked/stable/query-operators.html

但是,使用 IN,您只匹配值为 true 或 false 的节点。没有这个属性的节点会有n.isProcPhen?评估为空。

我怀疑您是否将查询更改为 n.isProcPhen?IN [true,false,null] 你会得到 5729 个结果。

于 2013-05-23T02:39:38.510 回答