2013-09-23 32 views
1

將元素追加到集合並確保該元素僅在集合中出現一次的最佳方式是什麼?neo4j對集合追加唯一

基本上我有一個標籤列表,並希望追加新的標籤。像下面的查詢,除了在n.index所有元素的東西都必須是唯一

MATCH n, tag:Tag 
WHERE n.id='22cfb053-f772-4a3a-83c4-bb733e3dac0a' AND tag.name='hello world' 
SET n.index=n.index+tag.index 
RETURN n; 

回答

0

你應該考慮通過TAGGED關係的內容節點連接到Tag節點。

對於合併使用文字集合和+。 n.index已經必須是數組屬性。

MATCH (n:Content), (tag:Tag) 
WHERE n.id='22cfb053-f772-4a3a-83c4-bb733e3dac0a' AND tag.name='hello world' 
SET n.index=n.index+[tag.index] 
RETURN n; 
+0

的節點已經連接通過這樣的關係來標記。該屬性僅用於查詢,因爲要支持多字標記,我必須將搜索索引添加到內容節點,而不僅僅是標記。我認爲從索引中刪除重複項是一個好主意,但實際上現在我已經嘗試了一下,畢竟我認爲它可能沒有必要。我想如果我需要做更多特定的索引,我必須使用Java API,對吧? – user2608171

+0

如果您使用的手動索引可以讓您隨意索引,那麼Java API是您最好的朋友。 –

0
MATCH n, tag:Tag 
WHERE n.id='22cfb053-f772-4a3a-83c4-bb733e3dac0a' AND tag.name='hello world' 
WITH n, FILTER(x IN n.index WHERE x <> tag.index) as filtered 
SET n.index=filtered + tag.index 
RETURN n;