我试图找出动态传递返回参数的方法,这样我可以重用多个案例的查询,比如在一种情况下我需要两个节点字段,在另一种情况下我需要三个字段,如
所以我需要用户
的两个属性 id和名称Match (n:User) where id(n)={0} return n = {1}; //cypher params to pass= {0=1,1={id(n) as id,n.name as name}};
这里,我需要三个用户属性,
Match (n:User) where id(n)={0} return n = {1}; //cypher params to pass= {0=1,1={id(n) as id,n.name as name,n.active as active}};
因此可以动态传递返回参数。
谢谢,任何帮助都将不胜感激。
答案 0 :(得分:0)
据我了解,您希望在查询结束时返回一组不同的值,具体取决于您传递给查询的参数?你可以在cypher中轻松实现这一点,使用类似下面的内容!
示例的夹具:
CREATE (u:ExampleUser { name: "Test User" })
查询:
WITH 0 AS return_type // change to 1 to see just name!
MATCH (u:ExampleUser) WHERE u.name = "Test User"
WITH
CASE return_type
WHEN 0 THEN { name: u.name, id: id(u) }
WHEN 1 THEN { name: u.name }
END AS return_value
RETURN return_value
我们使用CASE
运算符将return_type
的值设置为两个映射之一,具体取决于return_type
的值。您可以使用0
替换示例中的1
以获取名称。同样,用参数替换以动态更改输出。您还可以根据需要添加更多WHEN x THEN y
子句。
您的输出将是名为return_value
的映射。