Neo4jを使用して、潜在的に不正なカード取引をほぼリアルタイムで検出する方法を検討しています。私はオンラインシステムから、彼らが使ったカードと顧客の詳細を受け取ります。私がここでやろうとしているのは、顧客とカードのための新しいノードを作成し、それが存在しない場合はそれらの関係を確立することです。Neo4j:ノード数の維持
お客様がカードを使用するたびに、カードが最後に使用された時間を設定する必要があります。さらに、この顧客とカードの関係が初めて確認された場合は、顧客が関連していること、およびカードに関連付けられている顧客の数。
以下のCypherはうまくいくようですが、作成時だけでなく、関係が確認されるたびにカウントが再評価されると思います。このステートメントでON MATCHとON CREATEを使用して不要な処理を制限することはできますか?
MERGE (c:customers {customer_id:"12345678"})
MERGE (a:cards {card_hash:"45uIic..."})
MERGE (c)-[r:has_card]->(a)
set r.last_transaction = "30-NOV-2016 07:58:42"
set a.card_ct = size(()-[:has_card]->(a))
set c.card_count = size((c)-[:has_card]->())
私は(py2neoを使用して)のPythonからこれを実行しています、私はまた、私は近所の別注ダイクストラ基づいて検索をキックオフすることができます戻って何かを返したいです。これが新しい関係か既存の関係かに基づいて、どのように変数を返すかというアイデアはありますか?
ありがとう、それは私が必要なものです。また、各行に新しいSETを使用すべきではないことに気付きました。ON MATCHに続く文を区切るためにカンマを使用するだけで、必要な処理が実行されます。 – Alun