2016-11-20 36 views
0

我的數據庫有Book節點。如果在數組中,添加關係,否則刪除關係

比方說,用戶希望編輯他們已經看過的書,造成的所有書籍的新陣中,他們已經閱讀:

booksRead = ["Harry Potter", "Lord of the Rings"] 

如何:

創建如果圖書在booksRead關係,刪除尚未被讀取

所以我們可以說用戶放下他們以前偶然閱讀「飢餓遊戲」的書的關係。 「飢餓遊戲」圖書將與用戶分離,因爲它不在新陣列中booksRead

我知道如何做第一部分,但需要幫助刪除尚未閱讀的書籍的現有關係。

MATCH (user:User), (book:Book) 
WHERE user.user_id = 1 AND book.title in ["Harry Potter", "Lord of the Rings"] 
MERGE (user)-[r:READ]->(book) 
RETURN book 

旁邊的問題:做一個1,而不是傳入整個新陣列覆蓋更好嗎?我習慣於像MongoDB這樣的NoSQL,它可以輕鬆替換整個陣列...

回答

2

如果您希望數組保存讀取的完整書籍集合,那麼這只是一個清理所有書籍的問題用戶先讀取數據,然後與數組中的圖書形成所有新關係,或先將所有書籍從輸入數組中合併,然後刪除不在數組中的所有書籍。

下面是第二種方法的查詢,它從原始查詢繼續。

MATCH (user:User), (book:Book) 
WHERE user.user_id = 1 AND book.title in ["Harry Potter", "Lord of the Rings"] 
MERGE (user)-[:READ]->(book) 
WITH user, COLLECT(book) as booksRead 
MATCH (user)-[r:READ]->(book:Book) 
WHERE book NOT IN booksRead 
DELETE r 
+0

第一次看到WITH和COLLECT。我需要學習更多的語法! – kayla