neo4j 中的 WHERE 条件 |按关系筛选 属性
WHERE condition in neo4j | Filtering by relationship property
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
但它仍然是 returns 没有过滤的数据集。怎么了 ?以及过滤在 neo4j 中对多个 MATCH
语句如何工作说什么时候我想 运行 我对前面步骤中过滤数据集的查询?
非常感谢您。
密码语句似乎没有任何问题。
可以使用 WITH
子句应用后续的 MATCH
语句,这里有详细的记录:https://neo4j.com/docs/cypher-manual/current/clauses/with/
我觉得你的查询没问题。但是,我想在这里指出两件事:
- 在这种情况下,可以删除
WHERE
子句并改用 属性 匹配。
MATCH
子句可以组合。
因此,查询将是:
MATCH (c:Client) -[r:CONTAINS {created: "yesterday"}]-> (t:Transaction) -[:INCLUDES]-> (i:Item)
RETURN c, t, i
关于你的第二个问题,当你想 运行 对上一步过滤后的数据集进行另一个查询时,请使用 WITH
命令。 return 不是 return 结果,WITH
会将您的结果通过管道传递给下一个查询。
例如,对于您的查询,我们可以做这样的事情来按客户名称对结果进行排序,return 仅客户:
MATCH (c:Client) -[r:CONTAINS {created: "yesterday"}]-> (t:Transaction) -[:INCLUDES]-> (i:Item)
WITH c, t, i
ODERBY c.name DESC
RETURN c
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
但它仍然是 returns 没有过滤的数据集。怎么了 ?以及过滤在 neo4j 中对多个 MATCH
语句如何工作说什么时候我想 运行 我对前面步骤中过滤数据集的查询?
非常感谢您。
密码语句似乎没有任何问题。
可以使用 WITH
子句应用后续的 MATCH
语句,这里有详细的记录:https://neo4j.com/docs/cypher-manual/current/clauses/with/
我觉得你的查询没问题。但是,我想在这里指出两件事:
- 在这种情况下,可以删除
WHERE
子句并改用 属性 匹配。 MATCH
子句可以组合。
因此,查询将是:
MATCH (c:Client) -[r:CONTAINS {created: "yesterday"}]-> (t:Transaction) -[:INCLUDES]-> (i:Item)
RETURN c, t, i
关于你的第二个问题,当你想 运行 对上一步过滤后的数据集进行另一个查询时,请使用 WITH
命令。 return 不是 return 结果,WITH
会将您的结果通过管道传递给下一个查询。
例如,对于您的查询,我们可以做这样的事情来按客户名称对结果进行排序,return 仅客户:
MATCH (c:Client) -[r:CONTAINS {created: "yesterday"}]-> (t:Transaction) -[:INCLUDES]-> (i:Item)
WITH c, t, i
ODERBY c.name DESC
RETURN c