RailsアプリでNeo4j.rb gemを使用しているアプリがあり、ノード/リレーションシップが数千しかない小規模なデータベースで、バッチアップロードおよびダウンロードスクリプトを作成しています。ほとんどの場合、バックアップ/移行を目的としています。今のところ、Terms と Permission Groups の 2 つのノードがあります。プロパティのみを使用して各ノードをエクスポートするのは非常に簡単ですが、各ノード内の関連付けがありません。プロパティと関連付けを含む各ノードをエクスポートする方法はありますか?
相互に関連付けられているノードが 2 つだけの DB の例:
# Create blank holding array
2.0.0-p353 :001 > bulk = []
=> []
# Iterate through each node and drop into array
2.0.0-p353 :002 > Term.all.each do |t|
2.0.0-p353 :003 > bulk << t
2.0.0-p353 :004?> end
=> [#<Term access_designation: nil, created_at: Mon, 20 Jul 2015 18:12:39 +0000, created_by: nil, data_availability: nil, definition: "New York", name: "Awesome Term", notes: nil, possible_values: nil, sensitivity_access_notes: nil, sensitivity_classification: nil, source_system: nil, updated_at: Mon, 20 Jul 2015 18:12:39 +0000, updated_by: nil>]
2.0.0-p353 :005 > PermissionGroup.all.each do |pg|
2.0.0-p353 :006 > bulk << pg
2.0.0-p353 :007?> end
=> [#<PermissionGroup created_at: Mon, 20 Jul 2015 18:14:29 +0000, created_by: nil, name: "my group", updated_at: Mon, 20 Jul 2015 18:14:29 +0000, updated_by: nil>]
# output result to json
2.0.0-p353 :008 > bulk.to_json
=> "[{\"term\":{\"name\":\"Awesome Term\",\"definition\":\"New York\",\"source_system\":null,\"possible_values\":null,\"notes\":null,\"data_availability\":null,\"sensitivity_classification\":null,\"access_designation\":null,\"sensitivity_access_notes\":null,\"created_at\":\"2015-07-20T18:12:39+00:00\",\"updated_at\":\"2015-07-20T18:12:39+00:00\",\"created_by\":null,\"updated_by\":null,\"id\":\"ed820017-24d9-4895-aea2-2a899c83987a\"}},{\"permission_group\":{\"name\":\"my group\",\"created_at\":\"2015-07-20T18:14:29+00:00\",\"updated_at\":\"2015-07-20T18:14:29+00:00\",\"created_by\":null,\"updated_by\":null,\"id\":\"7f6d87cf-a2d3-488e-be03-ca4087e48986\"}}]"
整形された結果の JSON は次のようになります。
[
{
"term": {
"name": "Awesome Term",
"definition": "New York",
"source_system": null,
"possible_values": null,
"notes": null,
"data_availability": null,
"sensitivity_classification": null,
"access_designation": null,
"sensitivity_access_notes": null,
"created_at": "2015-07-20T18:12:39+00:00",
"updated_at": "2015-07-20T18:12:39+00:00",
"created_by": null,
"updated_by": null,
"id": "ed820017-24d9-4895-aea2-2a899c83987a"
}
},
{
"permission_group": {
"name": "my group",
"created_at": "2015-07-20T18:14:29+00:00",
"updated_at": "2015-07-20T18:14:29+00:00",
"created_by": null,
"updated_by": null,
"id": "7f6d87cf-a2d3-488e-be03-ca4087e48986"
}
}
]
しかし、関連性がありません。クエリを実行すると、それらがあることがわかります
2.0.0-p353 :010 > t = Term.first
=> #<Term access_designation: nil, created_at: Mon, 20 Jul 2015 18:12:39 +0000, created_by: nil, data_availability: nil, definition: "New York", name: "Awesome Term", notes: nil, possible_values: nil, sensitivity_access_notes: nil, sensitivity_classification: nil, source_system: nil, updated_at: Mon, 20 Jul 2015 18:12:39 +0000, updated_by: nil>
2.0.0-p353 :011 > t.permission_group
=> #<PermissionGroup created_at: Mon, 20 Jul 2015 18:14:29 +0000, created_by: nil, name: "my group", updated_at: Mon, 20 Jul 2015 18:14:29 +0000, updated_by: nil>
2.0.0-p353 :012 > t.permission_group.name
=> "my group"
私の質問は、すべてのノードをプロパティと関連付けとともに出力するにはどうすればよいですか? 派手な neo4j.rb マジック メソッドはありますか、それともサイファー クエリを手動で書き出す必要がありますか?