2015-05-07 52 views
4

我有一個字段cat_to_pub類型爲MAP從卡桑德拉的MAP中刪除多個元素?

{1: '9-20-21', 2: '2-5-21', 4: '2-5-21', 5: '2', 6: '2', 9: '2-83-153-149', 11: '2-5-21-31', 29: '100', 32: '113-198-21'} 

我可以用

DELETE cat_to_pub[1] FROM user_preferences WHERE user_id = 'jayeshjain'; 

我如何刪除從這個集合中的多個元素刪除該地圖的單個元素?

例如,如果我想刪除密鑰1和2,我如何形成我的查詢?

回答

3

我不認爲有一種方法可以將它作爲單個簡單語句來完成,但您應該可以將其作爲批處理語句來完成。由於您從同一個分區中刪除(因爲您從同一個映射列中刪除),所以性能應該仍然相當不錯,因爲這仍然會作爲一個操作完成(通過執行查詢跟蹤進行驗證)。

BEGIN UNLOGGED BATCH 
    DELETE cat_to_pub[1] from user_preferences where user_id ='jayeshjain'; 
    DELETE cat_to_pub[2] from user_preferences where user_id ='jayeshjain'; 
APPLY BATCH; 
2

隨着卡桑德拉的新版本(試圖與3.7),你可以 update user_preference set cat_to_pub = cat_to_pub - { 1, 2 } where user_id = 'jayeshjain';

+1

這應該是公認的答案 –

+0

這也適用於卡桑德拉2.X –