是否可以在cypher中使用带有case语句的模式?特别是如果模式存在则返回true或false。我试图模仿人际关系,而友谊不会得到回报。
所以(用户) - [:朋友] - >(user2)是一个单独的数据点 (用户2) - [:朋友] - GT;(用户1)
然后我想运行一个查询,该查询将显示将其视为回馈的朋友的用户
看起来像这样的东西(显然不起作用)
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
{
if(event.getY() > screenY/2)
{
playerPoint1.set((int)event.getX(), (int)event.getY());
}
else if(event.getY() < screenY/2)
{
playerPoint2.set((int)event.getX(), (int)event.getY());
}
}
}
return true;
}
无论如何要做到这一点?
我知道一个解决方法是运行一个查询,寻找那些考虑user1朋友然后在我的应用程序中在cypher之外循环它们的人,但我想知道是否有一种纯密码方式来执行此操作。
答案 0 :(得分:1)
CASE
子句不是获取布尔结果的唯一方法,对于您的用例不是必需的。
像(target)-[:teaches]->(asker)
这样的模式会产生一个(可能是空的)路径集合,所以这会起作用:
MATCH (asker), (target)
RETURN asker, target,
SIZE((target)-[:teaches]->(asker)) > 0 AS returnsFriendship
但如果只需要测试模式的存在,使用EXISTS
函数会更好:
MATCH (asker), (target)
RETURN asker, target,
EXISTS((target)-[:teaches]->(asker)) AS returnsFriendship