根据条件,创建节点和 return 值
Base on condition, create node and return value
在我的 neo4j 数据库中,我有 2 种节点类型:
public class Warrior
{
public string Id{get;set}
public string Name{get;set;}
}
public class Weapon
{
public string Id{get;set;}
public string Name{get;set;}
}
我希望我的查询具有与此相同的功能:
var warrior = Match(warrior.Id == 1)
var weapon = Match(weapon.Id == 2)
if (warrior == null)
return 0;
if (weapon == null)
return 1;
CreateConnection(warrior-[:HAS]->Weapon)
return 2;
谢谢。
P/S : 接受 Neo4j 或 Neo4jClient 查询,我可以将它们相互转换。
以下查询应该满足您的要求。
optional match (warrior:Warrior) where warrior.id=1 with warrior
optional match (weapon:Weapon) where weapon.id=2 with warrior,weapon,
case when exists(warrior.id) and exists(weapon.id) then 2 when exists(weapon.id) then 1 else 0 end as output
foreach(temp in case when output=2 then [1] else [] end |
create (warrior)-[:Has]->(weapon)
)
return warrior,weapon
我们使用可选匹配而不是匹配,这样即使匹配不成功,查询也不会失败。
我们使用 case 语句检查 warrior 或 weapon 变量的 ID 值是否存在,并将结果值(0 或 1 或 2)存储在输出变量中。
接下来我们使用 foreach 循环案例技巧来检查输出是否有值 2 并执行创建语句。
(技巧参考。http://www.markhneedham.com/blog/2014/08/22/neo4j-load-csv-handling-empty-columns/)
在我的 neo4j 数据库中,我有 2 种节点类型:
public class Warrior
{
public string Id{get;set}
public string Name{get;set;}
}
public class Weapon
{
public string Id{get;set;}
public string Name{get;set;}
}
我希望我的查询具有与此相同的功能:
var warrior = Match(warrior.Id == 1)
var weapon = Match(weapon.Id == 2)
if (warrior == null)
return 0;
if (weapon == null)
return 1;
CreateConnection(warrior-[:HAS]->Weapon)
return 2;
谢谢。
P/S : 接受 Neo4j 或 Neo4jClient 查询,我可以将它们相互转换。
以下查询应该满足您的要求。
optional match (warrior:Warrior) where warrior.id=1 with warrior
optional match (weapon:Weapon) where weapon.id=2 with warrior,weapon,
case when exists(warrior.id) and exists(weapon.id) then 2 when exists(weapon.id) then 1 else 0 end as output
foreach(temp in case when output=2 then [1] else [] end |
create (warrior)-[:Has]->(weapon)
)
return warrior,weapon
我们使用可选匹配而不是匹配,这样即使匹配不成功,查询也不会失败。
我们使用 case 语句检查 warrior 或 weapon 变量的 ID 值是否存在,并将结果值(0 或 1 或 2)存储在输出变量中。
接下来我们使用 foreach 循环案例技巧来检查输出是否有值 2 并执行创建语句。
(技巧参考。http://www.markhneedham.com/blog/2014/08/22/neo4j-load-csv-handling-empty-columns/)