![](/img/trans.png)
[英]Can I selectively create a backup of Postgres database, with only certian tables?
[英]How can I call this APOC procedure selectively? (only on a subset of nodes)
我有一個 Neo4J 數據庫,其中包含許多 label com 節點。 這些節點包含一個關鍵屬性——它以我想要的方式對它們進行唯一分組。 它們還具有時間戳屬性,以及許多其他 integer 屬性。
這是我面臨的問題:我想使用 APOC 圖分組過程根據它們的關鍵屬性將這些節點聚合在一起。 但是,我想有選擇地這樣做——這樣我只聚合節點,如果它們的時間戳屬性滿足提供的時間 window。
我試圖根據時間戳使用 WHERE 子句匹配和過濾節點,但我無法將這些節點專門傳遞給nodes.group
過程。 基本上,我需要弄清楚如何只在特定的節點子集上調用nodes.group
。 我會很感激任何幫助。
這是我正在執行的呼叫:
CALL apoc.nodes.group(['com'], ['key'], [{val1: 'sum', val2: 'sum', val3: 'sum',' time_start: 'collect'}]) YIELD node
正如我上面提到的,我嘗試執行
MATCH (c:com) WHERE c.time_start >= datetime('2020-12-16T21:45:05Z')
...在程序之前,然后鏈接查詢,但它不起作用。
該過程仍然在 com 關系的所有節點上調用,而不僅僅是我過濾的那些節點。
該過程本身不允許您通過此類過濾器。 然而,有兩種可能性可以規避這一點:
我將專注於選項2:
以下圖為例:
UNWIND range(1, 200) AS i
CREATE (n:com)
SET n.timestamp = i,
n.key = apoc.coll.randomItem(items)
假設我有一個假設的 window 使用,即30 to 70
,我只能找到與我的 window 謂詞匹配的節點:
WITH [30, 70] AS window
MATCH (n:com)
WHERE n.timestamp > window[0]
AND n.timestamp < window[1]
RETURN count(n)
╒══════════╕
│"count(n)"│
╞══════════╡
│39 │
└──────────┘
在進入分組查詢之前,我只想說明您可以設置一個 label 並在同一個查詢中使用謂詞將其刪除。
WITH [30, 70] AS window
MATCH (n:com)
WHERE n.timestamp > window[0]
AND n.timestamp < window[1]
SET n:temporary
WITH count(n) AS doSomething
MATCH (n:temporary)
REMOVE n:temporary
WITH count(*) AS break, doSomething
RETURN doSomething
最后一個WITH count(*)
是每個臨時節點不返回一行所必需的。
現在,使用這個邏輯,我們可以:
MATCH
節點temporary
labeltemporary
label 上使用apoc.nodes.group
temporary
labelWITH [30, 70] AS window
MATCH (n:com) WHERE n.timestamp > window[0] AND n.timestamp < window[1]
SET n:temporary
WITH window, count(*) AS x
CALL apoc.nodes.group(['temporary'], ['key'], null, {})
YIELD node, relationship
WITH collect(node) AS elements
MATCH (n:temporary) REMOVE n:temporary
WITH count(*) AS break, elements
UNWIND elements AS element
RETURN element
╒════════════════════════╕
│"element" │
╞════════════════════════╡
│{"count_*":6,"key":"f"} │
├────────────────────────┤
│{"count_*":6,"key":"e"} │
├────────────────────────┤
│{"count_*":12,"key":"d"}│
├────────────────────────┤
│{"count_*":1,"key":"c"} │
├────────────────────────┤
│{"count_*":5,"key":"b"} │
├────────────────────────┤
│{"count_*":9,"key":"a"} │
└────────────────────────┘
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.