私はこのjsonを持っています:
{
"name":"david", //node:Person
"TAKING":[ //link
{"name":"math"}, //node:Subject
{"name":"physics"} //node:Subject
],
"FRIEND":[ //link
{"name":"andres"}, //node:Person
{"name":"luis"} //node:Person
]
}
そして、neo4jから抽出するためのこのクエリがあります
start person=node(*) match person-[:FRIEND]->friend, person-[:TAKING]->subject where person.name="Andres" return person, collect(distinct friend), collect(distinct subject);
結果は次のとおりです。
==> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
==> | person | collect(distinct friend) | collect(distinct subject) |
==> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
==> | Node[1]{name:"Andres",title:"Developer"} | [Node[2]{name:"David",title:"Developer"},Node[3]{name:"Luis",title:"Developer"}] | [Node[5]{name:"math"},Node[6]{name:"physics"}] |
==> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
クエリのこの部分は改善できると思います。
person-[:FRIEND]->friend, person-[:TAKING]->subject
目標は、戻り部分で distinc 句を回避することです。
collect(distinct friend), collect(distinct subject)
私はそれを次のように書き直します:
subject<-[:TAKING]-person-[:FRIEND]->friend
でも同じ結果。
このクエリを作成するより良い方法はありますか? および cypher を使用して元の json を構築する方法はありますか?