与WHERE node.property? = ...
运算符结合使用时,似乎尝试使用default-false-if-missing语法(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
还有另一种方法可以做到这一点,还是我运气不好?
答案 0 :(得分:3)
5729个结果中的任何一个实际上都有这个属性isProcPhen吗?
如果他们没有该属性,那么查询会按预期工作,因为n.isProcPhen?由于缺少属性,因此= false将评估为true
请参阅http://docs.neo4j.org/chunked/stable/query-operators.html
但是,对于IN,您只匹配值为true或false的节点。没有此属性的节点将具有n.isProcPhen?评估为null。
我怀疑你是否将查询更改为n.isProcPhen? IN [true,false,null]你将得到5729个结果。