這篇文章,我將介紹截止目前,RedisGraph的最新版本(v2.4)對Cypher語言的支持情況。
1.模式(patterns)
RedisGraph已支持Cypher中所有的模式。
2.類型(types)
作為操作圖數據庫的查詢語言,Cypher的數據類型包括節點(nodes)、關系(relationships)、路徑(path)、列表(lists)、地圖(maps)、字符串類型(string)等等。目前尚未支持的類型主要是十六進制與八進制數字以及各類時間、日期、持續時間等時態類型(temporal types)。RedisGraph對NULL的實現是將其作為缺失或未定義值的表示。
3.子句(clauses)
RedisGraph已支持除REMOVE(用於刪除屬性值)子句外的全部子句,且基於RedisGraph對NULL的解釋方法,可通過設置(SET)屬性值為NULL的方法實現REMOVE的功能。
4.函數(functions)
函數是Cypher實現復雜查詢的基礎,是Cypher中十分重要的一部分,一條優美的查詢語句離不開恰當的函數與基礎的子句的組合。在眾多的函數種類中,已經得到RedisGraph全部支持的類別有聚合(aggregating)函數、列表(list)函數、數字數學(math - numeric)函數、斷言(predicate)函數、表達式(expression)函數和地理空間(geospatial)函數;得到RedisGraph部分支持的類別有標量(scalar)函數和字符串(string)函數;RedisGraph尚未支持的函數類別有對數數學(logarithmic math)函數、三角數學(trigonometric math)函數和用戶自定義(user-defined)函數。
5.操作符(operators)
數學操作符中,取冪(exponentiation)操作尚未得到支持;字符串操作符中,正則表達式(regex)尚未得到支持;所有布爾操作符都已得到RedisGraph支持。
Cypher語句是Neo4j推出的,操作圖數據庫的查詢語句,其地位可以對標關系型數據庫中的SQL語言。在操作RedisGraph時,需要按照指定格式使用Cypher命令。如:
GRAPH.QUERY MotoGP “MATCH (r : Rider)-[: rides]->(t : Team) WHERE t.name = ‘Yamaha’ RETURN r.name, t.name”
即格式為:
GRAPH.QUERY Database_name "Cypher codes"
按以上格式即可使用Cypher操作RedisGraph,但要注意,一定得是RedisGraph已支持的Cypher子句。