使えるシステムから使いたいシステムへ、有限会社アテージ

今回はエッジと呼ばれるタイプのドキュメントを紹介して、グラフを扱ってみます。エッジドキュメントは名前の通り、2つのドキュメントを関連付けるためのドキュメントで、向きを持ちます。

エッジコレクション

コレクションにはタイプと呼ばれる属性があります。たとえば、前回まで作成したコレクションのタイプはすべてdocumentです。このタイプのコレクションには、エッジドキュメントを入れることはできません。

エッジドキュメント入れるための専用のコレクションをあらたに作成する必要があります。type属性がdocumentではなく、edgeになっていることが確認できます。

エッジドキュメント

前回作成したcitiesコレクションの”Tokyo”と”Osaka”を関連付けるエッジドキュメント作成します。エッジドキュメントのtime属性は、移動に必要な時間のつもりですが、正しい値ではありません。あしからず。

作成したエッジドキュメントを見ると、通常のドキュメントにはない(内部)属性_fromと_toがあり、その値は指定したドキュメントの_idになっています。

エッジドキュメントは、ドキュメント間にいくつでも作成できますし、始点と終点が同じ同一のドキュメントであっても作成可能です。

検索

通常のドキュメントをノード、エッジドキュメントをエッジとして有向グラフを作成することができます。ノードとエッジには属性(ラベル)を付けることもできます。

“Tokyo”から”Osaka”へのエッジを作りましたが、いくつかエッジを追加して以下のようなグラフを作ります。

AQLを使っていくつか検索してみます。

ある都市(ノード)から直接移動できる都市を検索

200分以内で直接移動できる都市を検索

2都市間の移動経路を検索

経路情報も比較的簡単なクエリで検索できます。