neo4j中的where
条件是如何工作的?我有一个简单的数据集,关系如下=〉
Client -[CONTAINS {created:"yesterday or today"}]-> Transaction -[INCLUDES]-> Item
我想通过上面的过滤器获取昨天创建的交易的项目,我使用以下查询-
Match
(c:Client) -[r:CONTAINS]-> (t:Transaction),
(t) -[:INCLUDES]-> (i:Item)
where r.created="yesterday"
return c,t,i
但是它仍然返回没有过滤的数据集。这是怎么回事?当我想在前面步骤中的filtered dataset上运行查询时,neo4j中的多个MATCH
语句的过滤是如何工作的?
先谢谢你了。
2条答案
按热度按时间disho6za1#
你的问题对我来说似乎很好。但是,有两件事我想在这里指出:
1.在这种情况下,可以删除
WHERE
子句,并改用match by property。MATCH
子句可以组合使用。因此,查询将是:
关于您的第二个问题,当您希望对上一步中筛选的数据集运行另一个查询时,请使用
WITH
命令。WITH
将通过管道将结果传输到下一个查询,而不是返回结果。例如,对于你的查询,我们可以这样做,按客户端名称对结果进行排序,并只返回客户端:
5gfr0r5j2#
密码语句似乎没有任何问题。
应用后续的
MATCH
语句可以通过WITH
子句完成,这里有很好的文档记录:https://neo4j.com/docs/cypher-manual/current/clauses/with/