Mengirimkan beberapa pernyataan Cypher yang dipisahkan titik koma melalui Browser Neo4j

Saya ingin mengirimkan daftar pernyataan penulisan Cypher yang dipisahkan titik koma melalui browser web tetapi saya mendapatkan kesalahan...

MERGE (a:user{id: 'A'}) 
MERGE (b:product{id: '1'}) 
CREATE UNIQUE (a)-[:USED_BY]->(b); 


MERGE (a:user{id: 'B'}) 
MERGE (b:product{id: '4'})  
CREATE UNIQUE (a)-[:USED_BY]->(b); 

Saya membuat node baru dan merujuknya dalam pernyataan hubungan selanjutnya, jadi saya ingin mengirimkan pertanyaan terpisah daripada pertanyaan panjang dan saya ingin melakukannya melalui Cypher.

Apa cara terbaik untuk melakukan ini?


person Dirk Calloway    schedule 06.12.2013    source sumber
comment
Mengirimkan permintaan fitur untuk ini: github.com/neo4j/neo4j/issues/3908   -  person Kees de Kooter    schedule 29.01.2015
comment
Anda harus melakukannya di shell saja.   -  person Nicole White    schedule 30.01.2015


Jawaban (6)


Ada pengaturan sederhana untuk melakukan ini sekarang: Enable multi statement query editor.

Kemudian Anda dapat menjalankan beberapa pernyataan yang dipisahkan dengan titik koma ;

tangkapan layar neo4j dengan pengaturan yang disorot dan hasil dari kedua pernyataan di atas

person jpenna    schedule 30.08.2019

Saya menemukan solusi di Beberapa pertanyaan yang tidak terkait di Neo4j Cypher?

Sederhananya WITH count(*) as dummy di antara perintah independen.

person NikoNyrh    schedule 03.01.2016

Ini bukan bug, melainkan perilaku yang diharapkan (pada saat penulisan artikel ini, misalnya Neo4j 2.2 dan versi lebih lama).

Browser Neo4j menjalankan setiap perintah yang dimasukkan sebagai satu kueri, dan menampilkan hasil kueri tersebut. Itu tidak mendukung banyak pertanyaan (atau beberapa rangkaian hasil yang tersirat!).

Perhatikan bahwa dimungkinkan untuk menggunakan shell neo4j untuk menjalankan banyak kueri, seperti yang Anda coba lakukan. Hasil dari setiap perintah individu akan ditulis ke stdout. Contohnya ada di dokumentasi: http://neo4j.com/docs/stable/shell-sample-session.html

person Chris Leishman    schedule 29.01.2015

Sejauh yang saya tahu hal ini tidak mungkin dilakukan secara langsung, meskipun jika Anda memiliki python Anda dapat menginstal py2neo dan kemudian menggunakan cuplikan yang sangat mudah yang menggunakan REST api dari neo4j, yaitu.

from py2neo import cypher

session = cypher.Session("http://localhost:7474/db/data/")
tx = session.create_transaction()
cypher = [
    "MERGE (a:user{id: 'A'})"
    "MERGE (b:product{id: '1'})"
    "CREATE UNIQUE (a)-[:USED_BY]->(b)", #first statement 

    "MERGE (a:user{id: 'B'})" 
    "MERGE (b:product{id: '4'})"
    "CREATE UNIQUE (a)-[:USED_BY]->(b)" #second statement
] 

for q in cypher:
    tx.append(q)

tx.commit()

ini akan berhasil.

person Victor Ermolaev    schedule 24.01.2014

Ubah semua pernyataan Cypher Anda menjadi satu baris dan beri spasi di antara setiap pernyataan. Ini berfungsi di konsol browser neo4j.

person Deepita Pai    schedule 18.09.2015

Saya yakin apoc.cypher.runMany akan berhasil.

CALL apoc.cypher.runMany(statement, {})

(Saya sedang dalam proses mencobanya melalui Driver Python. Saya akan memperbarui postingan ini nanti dengan temuan saya.)

person Clem Wang    schedule 17.05.2021