数据库为空时,ANY函数不返回任何内容

时间:2018-07-20 11:10:05

标签: neo4j cypher any

我有一个密码查询,该查询旨在查看数据库中是否已存在具有特定电子邮件地址的帐户。为此,我使用内置的ANY函数:

MATCH (a:Account)
RETURN ANY(x IN a.email WHERE x='test@test.test') AS exists

由于这是一个开发数据库,​​因此在对数据结构进行重大更改导致数据库为空时,有时会删除测试记录。我遇到的问题是,上面显示的查询既不返回true也不返回false,而当数据库为空时它什么也不返回。这是有问题的,因为此查询是由使用graph-aware库的php脚本调用的,并且当我运行getRecord()时它会返回错误,因为该函数未返回任何内容。

如果数据库为空,是否有一种方法可以使ANY函数返回false

1 个答案:

答案 0 :(得分:1)

1)可以简化密码查询:

MATCH (a:Account) WHERE 'test@test.test' IN a.email
RETURN COUNT(a) > 0 AS exists

2)使用驱动程序功能:

$result = $client->run('
  MATCH (a:Account) WHERE \'test@test.test\' IN a.email
  RETURN COUNT(a) > 0 AS exists
')

var_dump($result->size() && $result->getRecord())

// or      .

var_dump($result->firstRecordOrDefault(false))