考慮下面的圖形數據模型。日子連接在一個鏈表中,但它們包含時間戳。如果我想要收集範圍之間的節點,我必須先選擇那些節點,然後選擇紫色的節點。從那裏我可以指定那些紫色節點必須連接到與我指定的Location
連接的黃色的Group
節點。
現在,如果我把這種模式爲暗號,我得到如下:
MATCH (d:Day)
WHERE d.timestamp > 123456789 AND d.timestamp < 234567891
MATCH (topic:Topic), (location:Location { city: "San Francisco" })
WHERE topic.name in ["NoSQL"]
WITH topic, location, day
MATCH (topic)<-[:HAS_TOPIC]-(group:Group)-[:LOCATED_IN]->(location)
WITH DISTINCT group, day
MATCH (group)-[:HAS_MEMBERS]->(stats:Stats)-[:ON_DAY]->(day)
WITH DISTINCT (day.month + "/" + day.day + "/" + day.year) as day,
group.name as group,
stats.count as members,
day.timestamp as timestamp
ORDER BY timestamp
RETURN day, group, members
如果你重構你的模型轉in_stock
關係與時間戳的節點,模型節點作爲鏈表,那麼你可以通過指定模式來選擇最近的:
MATCH (product:Product { sku: 1234 })-[:HAS_UPDATE]->(update:InStock)
WHERE NOT (update)-[:NEXT]->()
WITH update
MATCH (update)-[:STOCK_ITEMS]->(stockItems:StockItem),
(stockItems)<-[:STORED_AT]-(location:Location)
RETURN location.name, stockItems.quantity
這是最高性能的方式來做到這一點。要管理鏈接列表中的指針,這些指針允許您在範圍內(時間戳之間)查詢並查詢N個最近的項目。
嗨,而不是描述圖 - 你能告訴我們你的模型代碼和你嘗試工作的代碼嗎?歡呼:) –
我已經把Ruby和rails標籤關閉了。這是無關緊要的。這個查詢是關於圖。我需要密碼或neptigy答案。與模型無關。 –