Kueri cypher MATCH (n:BusinessBranch) RETURN n mengembalikan semua node dan saya ingin menghapus duplikat node dan relasinya berdasarkan properti address. Bagaimana aku melakukan itu?

2
camoflage 23 Oktober 2017, 09:06
Apakah Anda ingin menghapus duplikat saja atau Anda ingin menggabungkannya menjadi satu contoh?
 – 
Tezra
23 Oktober 2017, 15:45

1 menjawab

Jawaban Terbaik

[DIPERBARUI]

  1. Untuk menghapus semua BusinessBranch node yang memiliki nilai properti address yang sama (yang juga memerlukan penghapusan semua hubungannya):

    MATCH (b:BusinessBranch)
    WITH b.address AS address, COLLECT(b) AS branches
    WHERE SIZE(branches) > 1
    FOREACH (n IN branches | DETACH DELETE n);
    

    Kueri ini mengumpulkan semua BusinessBranch node yang memiliki alamat yang sama, memfilter koleksi yang memiliki lebih dari satu cabang, dan kemudian menggunakan DETACH DELETE pada semua cabang dalam koleksi yang dihasilkan (yang akan menghapus cabang < em>dan hubungan mereka).

  2. Untuk menghapus semua kecuali satu dari simpul duplikat, Anda dapat melakukan ini:

    MATCH (b:BusinessBranch)
    WITH b.address AS address, COLLECT(b) AS branches
    WHERE SIZE(branches) > 1
    FOREACH (n IN TAIL(branches) | DETACH DELETE n);
    

    Namun, dalam hal ini Anda harus terlebih dahulu melihat prosedur APOC apoc.refactor.mergeNodes, yang lebih sesuai untuk sebagian besar kasus penggunaan.

11
cybersam 13 Juli 2020, 19:04
Apakah tidak akan menghapus semua node dari cabang? Dalam hal ini, Jika Anda memiliki bisnis "XYZ" dua kali, setelah menjalankan kueri ini, Anda akan dibiarkan dengan 0 entri "XYZ" dan saya pikir satu entri dari keduanya harus dibiarkan.
 – 
Sameer Reza Khan
13 Juli 2020, 09:57
Pertanyaannya tidak menyatakan bahwa ia ingin menyimpan salah satu node. Seperti yang dinyatakan oleh jawaban asli saya, itu akan menghapus semua node duplikat. Namun, lihat jawaban saya yang diperbarui.
 – 
cybersam
13 Juli 2020, 19:04
Terima kasih @cybersam
 – 
Sameer Reza Khan
13 Juli 2020, 19:06
Jawaban yang sangat bagus Terima kasih satu juta @cybersam
 – 
Mhd Wael Jazmati
9 Desember 2020, 11:49