BH13.13/Cypher
提供:TogoWiki
(版間での差分)
46行: | 46行: | ||
p=allShortestPaths((hoge)-[r:relLabel*]->(fuga)) | p=allShortestPaths((hoge)-[r:relLabel*]->(fuga)) | ||
RETURN p | RETURN p | ||
+ | |||
+ | == WHERE == | ||
+ | * whereでちょっと凝ったフィルタ | ||
+ | MATCH (n:nodeLabel)-[r:relLabel]->(t:nodeLabel) | ||
+ | WHERE n.name = "hoge" OR n.name = "fuga" | ||
+ | RETURN n | ||
+ | |||
+ | * whereでちょっと凝ったフィルタ | ||
+ | MATCH (n:nodeLabel)-[r:relLabel]->(t:nodeLabel) | ||
+ | WHERE NOT n.name = "hoge" | ||
+ | RETURN n | ||
+ | |||
+ | * プロパティの有無でフィルタ | ||
+ | MATCH (n:nodeLabel)-[r:relLabel]->(t.nodeLabel) | ||
+ | WHERE HAS n.some_property | ||
+ | RETURN n | ||
+ | |||
+ | * 値の大小 | ||
+ | MATCH (n:nodeLabel) -[r:relLabel]->(t.nodeLabel) | ||
+ | WHERE n.int_property > 10 | ||
+ | RETURN n | ||
+ | |||
+ | * 正規表現最高 | ||
+ | MATCH (n:nodeLabel) -[r:relLabel]->(t.nodeLabel) | ||
+ | WHERE n.name =~ 'hog.*' | ||
+ | RETURN n | ||
+ | |||
+ | * リストを使う | ||
+ | MATCH (n:nodeLabel) -[r:relLabel]->(t.nodeLabel) | ||
+ | WHERE n.name IN ["hoge", "fuga"] | ||
+ | RETURN n | ||
== DELETE == | == DELETE == |
2014年1月31日 (金) 05:15時点における最新版
Cypher 例文集です。Annotation をしっかり書きましょう。
MATCH
- 全てのノードを返す (全部レンダリングすると遅いのでlimitつける)
MATCH (n) RETURN n LIMIT 10
- 全てのリレーションを返す
MATCH (n)-[r]-(t) RETURN r LIMIT 10
- 有向グラフで構成要素を返す
MATCH (n)-[r]->(t) RETURN n, r, t LIMIT 10
- ラベル・インデックスを使って返す
MATCH (n:nodeLabel)-[r:relLabel]->(t:nodeLabel) RETURN n, r, t LIMIT 10
- パスを返す
MATCH p=(n:nodeLabel)-[r:relLabel]->(t:nodeLabel) RETURN p LIMIT 10
- variable length paths
MATCH p=(n:nodeLabel)-[r:relLabel*0..3]->(t:nodeLabel) RETURN p LIMIT 10
- プロパティでノードを指定する
MATCH p=(n:nodeLabel {name: "hoge"})-[r:relLabel*0..3]->(t:nodeLabel {name: "fuga"}) RETURN p LIMIT 10
- shortest path
MATCH hoge=(n:nodeLabel {name: "hoge"}), fuga=(t:nodeLabel {name: "fuga"}), p=shortestPath((hoge)-[r:relLabel*0..10]->(fuga)) RETURN p
- all shortest paths
MATCH hoge=(n:nodeLabel {name: "hoge"}), fuga=(t:nodeLabel {name: "fuga"}), p=allShortestPaths((hoge)-[r:relLabel*]->(fuga)) RETURN p
WHERE
- whereでちょっと凝ったフィルタ
MATCH (n:nodeLabel)-[r:relLabel]->(t:nodeLabel) WHERE n.name = "hoge" OR n.name = "fuga" RETURN n
- whereでちょっと凝ったフィルタ
MATCH (n:nodeLabel)-[r:relLabel]->(t:nodeLabel) WHERE NOT n.name = "hoge" RETURN n
- プロパティの有無でフィルタ
MATCH (n:nodeLabel)-[r:relLabel]->(t.nodeLabel) WHERE HAS n.some_property RETURN n
- 値の大小
MATCH (n:nodeLabel) -[r:relLabel]->(t.nodeLabel) WHERE n.int_property > 10 RETURN n
- 正規表現最高
MATCH (n:nodeLabel) -[r:relLabel]->(t.nodeLabel) WHERE n.name =~ 'hog.*' RETURN n
- リストを使う
MATCH (n:nodeLabel) -[r:relLabel]->(t.nodeLabel) WHERE n.name IN ["hoge", "fuga"] RETURN n
DELETE
- 全てのノードとリレーションシップを削除。手動付加の索引は削除されない。
MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r