可選節點聚合
回答
鑑於你的示例圖,在Neo4j的,你可以使用下面的Cypher查詢捕獲直接(User)-->(Comment)
關係,並採用間接(User)-->(Comment)-->(Comment)
variable length path operator:
MATCH (u:User)-[*]->(:Comment)
RETURN u, COUNT(*) AS num
編輯
布魯諾指出該查詢喲返回3因爲它考慮了用戶分組的所有路徑。取而代之的是,你在連接到每個用戶不同 Comment節點數量可能感興趣的:
MATCH (u:User)-[*]->(c:Comment) RETURN u, COUNT(DISTINCT c) AS num
該查詢返回3,因爲它會考慮與圖中用戶有關的任何評論。返回2時,你需要指定'MATCH(u:User) - [*] - >(:Comment {text:'comment'})應該考慮什麼評論「 RETURN u,COUNT(*)AS num'或引用評論的任何其他標識符。 –
謝謝你們,非常感謝! –
正如您所標記orientdb
,下面是類似的Cypher與OrientDB的途徑之一。
select count(*) from (match {class:User}-->{class:Comment, as:r} return r)
可以深度甚至應用到搜索
隨着AQL graph traversal在ArangoDB,含用戶,評論和評論-2和邊緣集合的頂點集合nodes
contrib
與邊緣,你可以這樣做:
RETURN COUNT(
FOR v IN 1..5 INBOUND "nodes/comment" contrib
FILTER v._key == "user"
RETURN 1
)
沿入站方向在contrib
集合中的所有邊沿之後,遍歷開始於註釋節點,深度從1到5不等。應用過濾器將遍歷限制爲以用戶結束的路徑。
找到的兩條路徑是comment <-- user
和comment <-- comment-2 <-- user
。對於這兩條路徑,返回一個常量值(我們實際上並不需要節點中的任何東西)。周圍的RETURN COUNT()
語句計算子查詢返回的結果數量,因此。
你也可以遍歷其他方式,從評論到用戶:
RETURN COUNT(
FOR v IN 1..5 OUTBOUND "nodes/user" contrib
FILTER v._key == "comment"
RETURN 1
)
在一個大圖,你可以測試兩個查詢,看是否執行一個比另一個更好。還考慮使用traversal options,如bfs
(廣度優先搜索)和uniqueVertices
進行查詢優化。
- 1. 聚合節點和關係
- 2. PostgreSQL聚合節點遞歸
- 3. neo4j節點聚合過濾器
- 4. 簡單的節點與聚合物
- 5. 層次結構查詢 - 聚合節點
- 6. 使用$ scope變量的節點聚合
- 7. 如何在XSLT 1.0中聚合節點?
- 8. Neo4j聚合/連接節點的數量
- 9. 合併節點
- 10. 刪除節點從選擇/組合javascript
- 11. sql-xml:選擇節點集合
- 12. 使用xPath和聯合選擇節點
- 13. 選擇和操作混合節點
- 14. 數據點聚合組
- 15. sql server聚合浮點值
- 16. 從節點選擇中選擇節點
- 17. Neo4j:具有大量節點的緩慢聚合
- 18. 聚合物觀察節點不起作用
- 19. 使用聚合物和節點Js上傳圖片
- 20. 如何使用節點-js使用聚合函數
- 21. SQL XML列過濾器基於XML節點聚合函數
- 22. 聚合物1.0子元素不向父節點發射
- 23. 從子樹節點聚合值的算法
- 24. 如何在飛鏢聚合物中設計分佈式節點
- 25. 基於新家長條件下的聚合節點
- 26. MongoDB節點驅動程序當前聚合的計數
- 27. 聚合聚合(ARRAY_AGG)?
- 28. XSL存儲節點集合中可變
- 29. 選擇與聚合函數
- 30. 聚合物和jQuery選擇
圖中的邊緣/關係類型是什麼? – InverseFalcon