0

私はこの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 を構築する方法はありますか?

4

1 に答える 1