我正在写一篇关于使用图表来识别信用卡窃贼的博客文章。我的数据模型是:人通过交易与商家相关联。交易有时间和状态(“有争议”或“无争议”)。欺诈性交易是具有“有争议”属性的交易。简单的东西。
我正在尝试编写一个Cypher查询,用于识别图表中的欺诈性交易,并获取客户在欺诈性交易之前所做的最后5次交易。
这是我到目前为止所得到的:
MATCH (victim:person)-[r:HAS_BOUGHT_AT]->(merchant)
WHERE r.status = "Disputed"
MATCH victim-[t:HAS_BOUGHT_AT]->(othermerchants)
WHERE t.status = "Undisputed" AND t.time < r.time
RETURN DISTINCT victim.name as customer_name, othermerchants.name as store_name, t.amount as amount, t.time as transaction_time
ORDER BY t.time DESC
我有两个问题: - 查询返回涉及非受害者的交易 - 我不知道如何将结果限制为5个最新交易
任何人都知道我能做什么?
最佳,
让
答案 0 :(得分:2)
重新提出您的第一个问题,您能否就实际数据模型以及图表中的内容提供更多见解/详细信息?你如何定义受害者&#34;是什么?根据您当前的查询,&#34;受害者&#34;是一个有争议的人#34;交易。当你说你的查询是回归不是受害者的人时,会有什么样的人(或者#34;人?)被退回?
至于你的第二个问题,试试这个:
MATCH (victim:person)-[r:HAS_BOUGHT_AT]->(merchant)
WHERE r.status = "Disputed"
MATCH victim-[t:HAS_BOUGHT_AT]->(othermerchants)
WHERE t.status = "Undisputed" AND t.time < r.time
WITH victim, othermerchants, t ORDER BY t.time DESC LIMIT 5
RETURN DISTINCT victim.name as customer_name, othermerchants.name as store_name, t.amount as amount, t.time as transaction_time
ORDER BY t.time DESC
(注意&#34; WITH&#34;和#34; LIMIT&#34;。第二个&#34; ORDER BY&#34;可能没有实际意义。)