這篇文章,我將介紹截止目前,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子句。