Neo4jCypher查詢語(yǔ)言詳解_第1頁(yè)
Neo4jCypher查詢語(yǔ)言詳解_第2頁(yè)
Neo4jCypher查詢語(yǔ)言詳解_第3頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Neo4jCypher查詢語(yǔ)言詳解Cypher介紹“Cypher個(gè)描述性的圖形查詢語(yǔ)言,允許不必編寫圖形結(jié)構(gòu)的遍歷代碼對(duì)圖形存儲(chǔ)有表現(xiàn)力和效率的查詢。Cypher還在繼續(xù)發(fā)展和成熟,這也就意味著有可能會(huì)出現(xiàn)語(yǔ)法的變化。同時(shí)也意味著作為組件沒(méi)有經(jīng)歷嚴(yán)格的性能測(cè)試。Cypher設(shè)計(jì)的目的是一個(gè)人類查詢語(yǔ)言,適合于開(kāi)發(fā)者和在數(shù)據(jù)庫(kù)上做點(diǎn)對(duì)點(diǎn)模式(ad-hoc)查詢的專業(yè)操作人員(我認(rèn)為這個(gè)很重要)。它的構(gòu)念是基于英語(yǔ)單詞和靈巧的圖解。Cyper通過(guò)一系列不同的方法和建立于確定的實(shí)踐為表達(dá)查詢而激發(fā)的。許多關(guān)鍵字如like和orderby是受SQL的啟發(fā)。模式匹配的表達(dá)式來(lái)自于SPARQLo正則表達(dá)式

2、匹配實(shí)現(xiàn)實(shí)用Scalaprogramminglanguage語(yǔ)言。Cypher是一個(gè)申明式的語(yǔ)言。對(duì)比命令式語(yǔ)言如Java和腳本語(yǔ)言如Gremlin和JRuby,它的焦點(diǎn)在于從圖中如何找回(whattoretrieve),而不是怎么去做。這使得在不對(duì)用戶公布的實(shí)現(xiàn)細(xì)節(jié)里關(guān)心的是怎么優(yōu)化查詢。這個(gè)查詢語(yǔ)言包含以下幾個(gè)明顯的部分:?START:在圖中的開(kāi)始點(diǎn),通過(guò)元素的ID或所以查找獲得。?MATCH:圖形的匹配模式,束縛于開(kāi)始點(diǎn)。?WHERE:過(guò)濾條件。?RETURN:返回所需要的。在下例中看三個(gè)關(guān)鍵字示例圖片如下:如:這個(gè)有個(gè)查詢,通過(guò)遍歷圖找到索引里一個(gè)叫John的朋友的朋友(不是他的直接朋

3、友),返回John和找到的朋友的朋友。STARTjohn=node:node_auto_index(name='John')MATCHjohn-:friend->()-:friend->fofRETURNjohn,fof返回結(jié)果:下一步添加過(guò)濾:在下一個(gè)例子中,列出一組用戶的id并遍歷圖查找這些用戶接出friend關(guān)系線,返回有屬性name并且其值是以S開(kāi)始的用戶。STARTuser=node(5,4,1,2,3)MATCHuser-:friend->follower二/S.*/RETURNuser,返回結(jié)果:操作符Cypher中的操作符有三個(gè)不同種類:數(shù)學(xué),

4、相等和關(guān)系。數(shù)學(xué)操作符有+,-,*,/和。當(dāng)然只有+對(duì)字符有作用。等于操作符有=,<>,<,>,<=,>=。因?yàn)镹eo4j是一個(gè)模式少的圖形數(shù)據(jù)庫(kù),Cypher有兩個(gè)特殊的操作符和!。有些是用在屬性上,有些事用于處理缺少值。對(duì)于一個(gè)不存在的屬性做比較會(huì)導(dǎo)致錯(cuò)誤。為替代與其他什么做比較時(shí)總是檢查屬性是否存在,在缺失屬性時(shí)問(wèn)號(hào)將使得比較總是返回true,感嘆號(hào)使得比較總是返回false。="foo"這個(gè)斷言在屬性缺失情況下將評(píng)估為true。!="foo”這個(gè)斷言在屬性缺失情況下將評(píng)估為false。警告:在同一個(gè)比較中混合使用兩個(gè)符號(hào)

5、將導(dǎo)致不可預(yù)料的結(jié)果。參數(shù)Cypher支持帶參數(shù)的查詢。這允許開(kāi)發(fā)者不需要必須構(gòu)建一個(gè)string的查詢,并且使得Cypher的查詢計(jì)劃的緩存更容易。參數(shù)可以在where子句,start子句的索引key或索引值,索引查詢中作為節(jié)點(diǎn)/關(guān)系id的引用。以下是幾個(gè)在java中使用參數(shù)的示例:節(jié)點(diǎn)id參數(shù)Map<String,Object>params=newHashMap<String,Object>();("id",0);ExecutionResultresult=("startn=node(id)”,params);節(jié)點(diǎn)對(duì)象參數(shù)Map<

6、String,Object>params=newHashMap<String,Object>();("node”,andreasNode);ExecutionResultresult=("startn=node(node)",params);多節(jié)點(diǎn)id參數(shù)Map<String,Object>params=newHashMap<String,Object>();("id",(0,1,2);ExecutionResultresult=("startn=node(id)",params);

7、字符串參數(shù)Map<String,Object>params=newHashMap<String,Object>();("name","Johan");ExecutionResultresult=("startn=node(0,1,2)=namereturnn”,params);索引鍵值參數(shù)Map<String,Object>params=newHashMap<String,Object>();("key","name");("value"

8、,"Michaela");ExecutionResultresult=("startn=node:people(key=value)returnn",params);索引查詢參數(shù)Map<String,Object>params=newHashMap<String,Object>();("query”,"name:Andreas");ExecutionResultresult=("startn=node:people(query)returnn”,params);?SKIP與LIMIT*的數(shù)字

9、參數(shù)Map<String,Object>params=newHashMap<String,Object>();("s",1);(T,1);ExecutionResultresult=("startn=node(0,1,2)slimitl”,params);?正則表達(dá)式參數(shù)Map<String,Object>params=newHashMap<String,Object>();("regex",".*h.*");ExecutionResultresult=("start

10、n=node(0,1,2)=regex",params);標(biāo)識(shí)符當(dāng)你參考部分的模式時(shí),需要通過(guò)命名完成。定義的不同的命名部分就被稱為標(biāo)識(shí)符。如下例中:STARTn=node(1)MATCHn->bRETURNb標(biāo)識(shí)符為n和bo標(biāo)識(shí)符可以是大寫或小些,可以包含下劃線。當(dāng)需要其他字符時(shí)可以使用符號(hào)。對(duì)于屬性名的規(guī)則也是一樣。注解可以在查詢語(yǔ)句中使用雙斜杠來(lái)添加注解。如:STARTn=node(1)RETURNb結(jié)果:定向關(guān)系和標(biāo)識(shí)符如果需要關(guān)系的標(biāo)識(shí)符,為了過(guò)濾關(guān)系的屬性或?yàn)榱朔祷仃P(guān)系,可如下例使用標(biāo)識(shí)符。查詢:STARTn=node(3)MATCH(n)-r->()RETU

11、RNr所有從節(jié)點(diǎn)A接出的關(guān)系將被返回。結(jié)果:通過(guò)關(guān)系類型匹配當(dāng)已知關(guān)系類型并想通過(guò)關(guān)系類型匹配時(shí),可以通過(guò)冒號(hào)詳細(xì)描述。查詢:STARTn=node(3)MATCH(n)-:BLOCKS->(x)RETURNx返回A接出關(guān)系類型為BLOCKS的節(jié)點(diǎn)。結(jié)果:通過(guò)關(guān)系類型匹配和使用標(biāo)識(shí)符如果既想獲得關(guān)系又要通過(guò)已知的關(guān)系類型,那就都添加上,如:查詢:STARTn=node(3)MATCH(n)-r:BLOCKS->()RETURNr所有從A接出的關(guān)系為BLOCKS的關(guān)系都被返回。結(jié)果:帶有特殊字符的關(guān)系類型有時(shí)候數(shù)據(jù)庫(kù)中有非字母字符類型,或有空格在內(nèi)時(shí),使用單引號(hào)。查詢:STARTn=

12、node(3)MATCH(n)-r:TYPEWITHSPACEINIT->()RETURNr返回類型有空格的關(guān)系。結(jié)果:多重關(guān)系關(guān)系可以通過(guò)使用在()-()多個(gè)語(yǔ)句來(lái)表達(dá),或可以串在一起。如下:查詢:STARTa=node(3)MATCH(a)-:KNOWS->(b)-:KNOWS->(c)RETURNa,b,c路徑中的三個(gè)節(jié)點(diǎn)。結(jié)果:可變長(zhǎng)度的關(guān)系可變數(shù)量的關(guān)系->節(jié)點(diǎn)可以使用-:TYPE*minHops.maxHops->。查詢:STARTa=node(3),x=node(2,4)MATCHa-:KNOWS*1.3->xRETURNa,x如果在1到3的關(guān)

13、系中存在路徑,將返回開(kāi)始點(diǎn)和結(jié)束點(diǎn)。結(jié)果:在可變長(zhǎng)度關(guān)系的關(guān)系標(biāo)識(shí)符當(dāng)連接兩個(gè)節(jié)點(diǎn)的長(zhǎng)度是可變的不確定的時(shí),可以使用一個(gè)關(guān)系標(biāo)識(shí)符遍歷所有關(guān)系查詢:STARTa=node(3),x=node(2,4)MATCHa-r:KNOWS*1.3->xRETURNr如果在1到3的關(guān)系中存在路徑,將返回開(kāi)始點(diǎn)和結(jié)束點(diǎn)。結(jié)果:零長(zhǎng)度路徑當(dāng)使用可變長(zhǎng)度路徑,可能其路徑長(zhǎng)度為0,這也就是說(shuō)兩個(gè)標(biāo)識(shí)符指向的為同一個(gè)節(jié)點(diǎn)。如果兩點(diǎn)間的距離為0,可以確定這是同一個(gè)節(jié)點(diǎn)。查詢:STARTa=node(3)MATCHp1=a-:KNOWS*0.1->b,p2=b-:BLOCKS*0.1->cRETURN

14、a,b,c,length(p1),length(p2)這個(gè)查詢將返回四個(gè)路徑,其中有些路徑長(zhǎng)度為0.結(jié)果:可選關(guān)系如果關(guān)系為可選的,可以使用問(wèn)號(hào)表示。與SQL的外連接類似。如果關(guān)系存在,將被返回。如果不存在在其位置將以null代替。查詢:STARTa=node(2)MATCHa->xRETURNa,x返回一個(gè)節(jié)點(diǎn)和一個(gè)null,因?yàn)檫@個(gè)節(jié)點(diǎn)沒(méi)有關(guān)系。結(jié)果:可選類型和命名關(guān)系通過(guò)一個(gè)正常的關(guān)系,可以決定哪個(gè)標(biāo)識(shí)符可以進(jìn)入,那些關(guān)系類型是需要的。查詢:STARTa=node(3)MATCHa-r:LOVES->()RETURNa,r返回一個(gè)節(jié)點(diǎn)和一個(gè)null,因?yàn)檫@個(gè)節(jié)點(diǎn)沒(méi)有關(guān)系。結(jié)果

15、:可選元素的屬性返回可選元素上的屬性,null值將返回null。查詢:STARTa=node(2)MATCHa->xRETURNx,元素x在查詢中為null,所有其屬性name為null結(jié)果:復(fù)雜匹配在Cypher中,可喲通過(guò)更多復(fù)雜模式來(lái)匹配,像一個(gè)鉆石形狀模式。查詢:STARTa=node(3)MATCH(a)-:KNOWS->(b)-:KNOWS->(c),(a)-:BLOCKS-(d)-:KNOWS-(c)RETURNa,b,c,d路徑中的四個(gè)節(jié)點(diǎn)。結(jié)果:最短路徑使用shortestPath函數(shù)可以找出一條兩個(gè)節(jié)點(diǎn)間的最短路徑,如下。查詢:STARTd=node(1)

16、,e=node(2)MATCHp=shortestPath(d-*.15->e)RETURNp這意味著:找出兩點(diǎn)間的一條最短路徑,最大關(guān)系長(zhǎng)度為15.圓括號(hào)內(nèi)是一個(gè)簡(jiǎn)單的路徑連接,開(kāi)始節(jié)點(diǎn),連接關(guān)系和結(jié)束節(jié)點(diǎn)。關(guān)系的字符描述像關(guān)系類型,最大數(shù)和方向在尋找最短路徑中都將被用到。也可以標(biāo)識(shí)路徑為可選。結(jié)果:所有最但路徑找出兩節(jié)點(diǎn)節(jié)點(diǎn)所有的最短路徑。查詢:STARTd=node(1),e=node(2)MATCHp=allShortestPaths(d-*.15->e)RETURNp這將在節(jié)點(diǎn)d與e中找到兩條有方向的路徑。結(jié)果:命名路徑如果想在模式圖上的路徑進(jìn)行過(guò)濾或者返回此路徑,可以使

17、用命名路徑(namedpath)。查詢:STARTa=node(3)MATCHp=a->bRETURNp開(kāi)始節(jié)點(diǎn)的兩個(gè)路徑。結(jié)果:在綁定關(guān)系上的匹配當(dāng)模式中包含一個(gè)綁定關(guān)系時(shí),此關(guān)系模式?jīng)]有明確的方向,Cypher將嘗試著切換連接節(jié)點(diǎn)的邊匹配關(guān)系。查詢:STARTa=node(3),b=node(2)MATCHa-:KNOWS-x-:KNOWS-bRETURNx將返回兩個(gè)連接節(jié)點(diǎn),一次為開(kāi)始節(jié)點(diǎn),一次為結(jié)束節(jié)點(diǎn)。結(jié)果:Where如果需要從查找的數(shù)據(jù)的圖中過(guò)濾,可以在查詢語(yǔ)句中添加where子句。圖:Boolean操作類型可以使用boolean操作符and和or或者也可以使用not()函數(shù)

18、。查詢:STARTn=node(3,1)WHERE<="Tobias")ornot="Tobias")RETURNn返回節(jié)點(diǎn)。結(jié)果:節(jié)點(diǎn)屆性上的過(guò)濾查詢:STARTn=node(3,1)<30RETURNn結(jié)果:正則表達(dá)式可以通過(guò)使用=/regexp/來(lái)匹配正在表達(dá)式。如下:查詢:STARTn=node(3,1)二/Tob.*/RETURNn返回名叫Tobias的節(jié)點(diǎn)。結(jié)果:轉(zhuǎn)義正則表達(dá)式如果在正則表達(dá)式中需要有斜杠時(shí)可以通過(guò)轉(zhuǎn)義實(shí)現(xiàn)。查詢:STARTn=node(3,1)=/SomeVthing/RETURNn沒(méi)有匹配的節(jié)點(diǎn)返回。結(jié)果:不分

19、大小些正則表達(dá)式在正則表達(dá)式前加上i,整個(gè)正則表達(dá)式將會(huì)忽略大小寫。查詢:STARTn=node(3,1)二/(i)ANDR.*/RETURNn屬性name為Andres的節(jié)點(diǎn)將返回結(jié)果:關(guān)系類型上的過(guò)濾可以match模式中通過(guò)添加具體的關(guān)系類型,但有時(shí)需要針對(duì)類型的更加高級(jí)的過(guò)濾??梢允褂妹鞔_的type屬性來(lái)對(duì)比,查詢對(duì)關(guān)系類型名作一個(gè)正則比較。查詢:STARTn=node(3)MATCH(n)-r->()WHEREtype(r)=/K.*/RETURNr關(guān)系整個(gè)以K開(kāi)始的類型名都將返回。結(jié)果:屆性存在性查詢:STARTn=node(3,1)RETURNn結(jié)果:如果缺失屆性默認(rèn)為tru

20、e僅當(dāng)屬性存在時(shí),比較一個(gè)圖的元素的此屬性,使用允許空屬性的語(yǔ)法。查詢:STARTn=node(3,1)='white'RETURNn所有節(jié)點(diǎn)即使沒(méi)有belt屬性的都將返回。此類比較返回為true。結(jié)果:如果缺失屆性默認(rèn)為false需要在缺失屬性時(shí)為false,即不想返回此屬性不存在的節(jié)點(diǎn)時(shí)。使用感嘆號(hào)。查詢:STARTn=node(3,1)!='white'RETURNn結(jié)果:空置null過(guò)濾有時(shí)候需要測(cè)試值或者標(biāo)識(shí)符是否為null。與sql類似使用isnull或not(isnullx)也能起作用。查詢:STARTa=node(1),b=node(3,2)MA

21、TCHa<-r-bWHERErisnullRETURNbTobias節(jié)點(diǎn)沒(méi)有鏈接上。結(jié)果:關(guān)系過(guò)濾為過(guò)濾兩點(diǎn)間基于關(guān)系的子圖,在match子句中使用限制部分??梢悦枋鰩Х较虻年P(guān)系和可能的類型這些都是有效的表達(dá):WHEREa-bWHEREa-bWHEREa:KNOWS-bWHEREa-:KNOWS-b查詢:STARTa=node(1),b=node(3,2)WHEREa<-bRETURNbTobias節(jié)點(diǎn)沒(méi)有鏈接結(jié)果:neo4j綜合1. 目錄返回節(jié)點(diǎn)返回關(guān)系返回屬性帶特殊字符的標(biāo)識(shí)符列的別名可選屬性特別的結(jié)果查詢中的返回部分,返回途中定義的感興趣的部分??梢詾楣?jié)點(diǎn)、關(guān)系或其上的屬性。

22、圖返回節(jié)點(diǎn)返回一個(gè)節(jié)點(diǎn),在返回語(yǔ)句中列出即可。查詢:STARTn=node(2)RETURNn結(jié)果:返回關(guān)系查詢:STARTn=node(1)MATCH(n)-r:KNOWS->(c)RETURNr結(jié)果:返回屬性STARTn=node(1)結(jié)果:帶特殊字符的標(biāo)識(shí)符使用不在英語(yǔ)字符表中的字符,可以使用單引號(hào)。查詢:STARTThisisn'tacommonidentifier=node(1)RETURNThisisn'tacommonidentifier.<<!_>>'結(jié)果:列的別名可以給展示出來(lái)的列名起別名。查詢:STARTa=node(1

23、)返回節(jié)點(diǎn)的age屬性,但重命名列名。結(jié)果:可選屬性屬性在節(jié)點(diǎn)上可能存在也可能不存在,可以使用問(wèn)號(hào)來(lái)標(biāo)識(shí)標(biāo)識(shí)符即可查詢:STARTn=node(1,2)如果存在age屬性,則返回,不存在則返回null。結(jié)果:特別的結(jié)果DISTINCT僅檢索特別的行,基于選擇輸出的列。MATCH(a)->(b)RETURNdistinctb返回name為B的節(jié)點(diǎn),但僅為一次。結(jié)果:neo4j聚合函數(shù)目錄聚合Aggregation計(jì)數(shù)計(jì)算節(jié)點(diǎn)數(shù)分組計(jì)算關(guān)系類型計(jì)算實(shí)體數(shù)計(jì)算非空可以值數(shù)求和sum平均值avg最大值max最小值min聚類COLLECT相異DISTINCT聚合(Aggregation)為集合計(jì)算

24、數(shù)據(jù),Cypher提供聚類功能,與SQL的groupby類似。在return語(yǔ)句中發(fā)現(xiàn)的任何聚類函數(shù),所有沒(méi)有聚類函數(shù)的列將作為聚合key使用。圖:計(jì)數(shù)計(jì)數(shù)(count)使用來(lái)計(jì)算行數(shù)。Count有兩種使用方法。Count(*)計(jì)算匹配的行的行數(shù),count(<標(biāo)識(shí)符>)計(jì)算標(biāo)識(shí)符中非空值數(shù)。計(jì)算節(jié)點(diǎn)數(shù)計(jì)算鏈接到一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)數(shù),可以使用count(*)o查詢:STARTn=node(2)MATCH(n)->(x)RETURNn,count(*)返回開(kāi)始節(jié)點(diǎn)和相關(guān)節(jié)點(diǎn)節(jié)點(diǎn)數(shù)。結(jié)果:分組計(jì)算關(guān)系類型計(jì)算分組了得關(guān)系類型,返回關(guān)系類型并使用count(*)計(jì)算查詢:STARTn=

25、node(2)MATCH(n)-r->()RETURNtype(r),count(*)返回關(guān)系類型和其分組數(shù)。結(jié)果:計(jì)算實(shí)體數(shù)相比使用count(*),可能計(jì)算標(biāo)識(shí)符更實(shí)在。查詢:STARTn=node(2)MATCH(n)->(x)RETURNcount(x)返回鏈接到開(kāi)始節(jié)點(diǎn)上的節(jié)點(diǎn)數(shù)結(jié)果:計(jì)算非空可以值數(shù)STARTn=node(2,3,4,1)RETURNcount)結(jié)果:求和(sum)Sum集合簡(jiǎn)單計(jì)算數(shù)值類型的值。Null值將自動(dòng)去掉。如下:查詢:STARTn=node(2,3,4)RETURNsum計(jì)算所有節(jié)點(diǎn)屬性值之和。結(jié)果:平均值(avg)Avg計(jì)算數(shù)量列的平均值查

26、詢:STARTn=node(2,3,4)RETURNavg結(jié)果:最大值(max)Max查找數(shù)字列中的最大值。查詢:STARTn=node(2,3,4)RETURNmax結(jié)果:最小值(min)Min使用數(shù)字屬性作為輸入,并返回在列中最小的值。RETURNmin結(jié)果:聚類(COLLECT)Collect將所有值收集到一個(gè)集合list中。查詢:STARTn=node(2,3,4)RETURNcollect返回一個(gè)帶有所有屬性值的簡(jiǎn)單列。結(jié)果:相異(DISTINCT)聚合函數(shù)中使用distinct來(lái)去掉值中重復(fù)的數(shù)據(jù)。查詢:STARTa=node(2)MATCHa->bRETURNcount結(jié)果

27、:neo4j高級(jí)篇1. 目錄排序Orderby通過(guò)節(jié)點(diǎn)屬性排序節(jié)點(diǎn)通過(guò)多節(jié)點(diǎn)屬性排序節(jié)點(diǎn)倒序排列節(jié)點(diǎn)空值排序Skip跳過(guò)前三個(gè)返回中間兩個(gè)Limit1.返回第一部分函數(shù)Functions判斷AllAnyNoneSingleScalar函數(shù)LengthTypeIdCoalesce11.Iterable函數(shù)NodesRelationshipsExtract排序(Orderby)輸出結(jié)果排序可以使用orderby子句。注意,不能使用節(jié)點(diǎn)或者關(guān)系排序,僅僅只針對(duì)其屬性有效。圖:通過(guò)節(jié)點(diǎn)屬性排序節(jié)點(diǎn)查詢:STARTn=node(3,1,2)RETURNn結(jié)果:通過(guò)多節(jié)點(diǎn)屬性排序節(jié)點(diǎn)在orderby子句中

28、可以通過(guò)多個(gè)屬性來(lái)排序每個(gè)標(biāo)識(shí)符。Cypher首先將通過(guò)第一個(gè)標(biāo)識(shí)符排序,如果第一個(gè)標(biāo)識(shí)符或?qū)傩韵嗟龋瑒t在orderby中檢查下一個(gè)屬性,依次類推。查詢:STARTn=node(3,1,2)RETURNn,首先通過(guò)age排序,然后再通過(guò)name排序。結(jié)果:倒序排列節(jié)點(diǎn)可以在標(biāo)識(shí)符后添加desc或asc來(lái)進(jìn)行倒序排列或順序排列。查詢:STARTn=node(3,1,2)RETURNn結(jié)果:空值排序當(dāng)排列結(jié)果集時(shí),在順序排列中null將永遠(yuǎn)放在最后,而在倒序排列中放最前面。查詢:STARTn=node(3,1,2),n結(jié)果:SkipSkip允許返回總結(jié)果集中的一個(gè)子集。此不保證排序,除非使用了or

29、derby子句。圖:跳過(guò)前三個(gè)返回結(jié)果中一個(gè)子集,從第三個(gè)結(jié)果開(kāi)始,語(yǔ)法如下:查詢:STARTn=node(3,4,5,1,2)RETURNnSKIP3前三個(gè)節(jié)點(diǎn)將略過(guò),最后兩個(gè)節(jié)點(diǎn)將被返回。結(jié)果:返回中間兩個(gè)查詢:STARTn=node(3,4,5,1,2)RETURNnSKIP1LIMIT2中間兩個(gè)節(jié)點(diǎn)將被返回。結(jié)果:LimitLimit允許返回結(jié)果集中的一個(gè)子集。圖:返回第一部分查詢:STARTn=node(3,4,5,1,2)RETURNnLIMIT3結(jié)果:函數(shù)(Functions)在Cypher中有一組函數(shù),可分為三類不同類型:判斷、標(biāo)量函數(shù)和聚類函數(shù)。圖:判斷判斷為boolean函

30、數(shù),對(duì)給出的輸入集合做判斷并返回true或者false。常用在where子句中過(guò)濾子集。All迭代測(cè)試集合中所有元素的判斷。語(yǔ)法:All(標(biāo)識(shí)符initerablewhere判斷)參數(shù):iterable:一個(gè)集合屬性,或者可迭代的元素,或一個(gè)迭代函數(shù)。標(biāo)識(shí)符:可用于判斷比較的標(biāo)識(shí)符。判斷:一個(gè)測(cè)試所有迭代器中元素的判斷。查詢:STARTa=node(3),b=node(1)MATCHp=a-*1.3->bWHEREall(xinnodes(p)>30)RETURNp過(guò)濾包含age30的節(jié)點(diǎn)的路徑,返回符合條件路徑中所有節(jié)點(diǎn)。結(jié)果:Any語(yǔ)法:ANY(identifieriniter

31、ableWHEREpredicate)參數(shù):Iterable(迭代器):一個(gè)集合屬性,或者可迭代的元素,或一個(gè)迭代函數(shù)Identifier(標(biāo)識(shí)符):可用于判斷比較的標(biāo)識(shí)符。Predicate(判斷):一個(gè)測(cè)試所有迭代器中元素的判斷。查詢:STARTa=node(2)WHEREany="one")RETURNa結(jié)果:None在迭代器中沒(méi)有元素判斷將返回true。語(yǔ)法:NONE(identifieriniterableWHEREpredicate)Iterable(迭代器):一個(gè)集合屬性,或者可迭代的元素,或一個(gè)迭代函數(shù)Identifier(標(biāo)識(shí)符):可用于判斷比較的標(biāo)識(shí)符。

32、Predicate(判斷):一個(gè)測(cè)試所有迭代器中元素的判斷。查詢:STARTn=node(3)MATCHp=n-*1.3->bWHERENONE(xinnodes(p)=25)RETURNp結(jié)果:Single如果迭代器中僅有一個(gè)元素則返回true。語(yǔ)法:SINGLE(identifieriniterableWHEREpredicate)參數(shù):Iterable(迭代器):一個(gè)集合屬性,或者可迭代的元素,或一個(gè)迭代函數(shù)Identifier(標(biāo)識(shí)符):可用于判斷比較的標(biāo)識(shí)符。Predicate(判斷):一個(gè)測(cè)試所有迭代器中元素的判斷。查詢:STARTn=node(3)MATCHp=n->bWHERESINGLE(varinnodes(p)="blue")RETURNp結(jié)果:Scalar函數(shù)標(biāo)量函數(shù)返回單個(gè)值。Length使用詳細(xì)的length屬性,返回或過(guò)濾路徑

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論