2016-08-31 25 views
0

我使用NEO4J 3.0,似乎HAS功能被刪除。 myrelationship的類型是一個日期,我期待檢索兩個日期之間的所有關係,例如我的屬性「a」大於某個值。NEO4j 3.0檢索某段時間內的數據

如何測試這個使用Neo4j的 謝謝

[編輯補充從評論信息]

我已經試過這樣:

MATCH p=(n:origin)-[r]->() 
WHERE r>'2015-01' 
RETURN AVG(r.amount) as totalamout; 

我創建每個日期,每個人的關係有一個屬性,amount,我正在計算某段時間的平均金額。例如,自2015-04年以來的平均金額。

+1

你能添加什麼疑問,你沒試過嗎?另外,您是否閱讀過Neo4j開發指南以熟悉最新的Cypher語法?如果您打算在此之外使用Neo4j,除非您熟悉Cypher的最新版本,否則您可能會問更多的問題,文檔可以更輕鬆地回答。 – InverseFalcon

回答

1

要回答第一句話引發的問題:在neo4j 3.x中,HAS()函數被EXISTS()替換。

[更新1]

此查詢的版本應該工作:

MATCH p=(n:origin)-[r]->() 
WHERE TYPE(r) > '2015-01' 
RETURN AVG(r.amount) as totalamout; 

然而,這是一個壞主意,讓你的人際關係基礎上的日期不同的類型。最好只使用date屬性。

[更新2]

如果你改變了你的數據模型添加date屬性的關係(而我會給型FOO),那麼下面的查詢將查找的平均數量,每p,所有的關係,其date是後2015-01(假設你所有的日期遵循同樣嚴格YYYY-MM模式):

MATCH p=(n:origin)-[r:FOO]->() 
WHERE r.date > '2015-01' 
RETURN p, AVG(r.amount) as avg_amout; 
+0

我試過這個: 'MATCH p =(n:origin) - [r] - >()WHERE r''2015-01'RETURN AVG(r.amount)as totalamout; ' 我創建了每個日期的關係,每個人都有一個屬性:amont和I4m正在計算某個時期的平均金額。舉例來說,平均金額由於'2015-04' – MAYA

+0

好的,看我更新的答案。 – cybersam

+0

@MAYA爲cybersam的建議增加額外的重點,不要使用日期字符串作爲關係類型。如果有關係不是日期字符串,那麼您可能會將字符串與日期字符串進行比較而不會意識到這一點,這可能會給您錯誤的答案。例如,返回'abd'>'123'作爲result'返回true,這肯定會搞亂你的查詢。請將該日期記錄爲關係中的一個屬性,因此您的關係日期之間的比較始終是明確的。 – InverseFalcon