从cassandra中删除MAP中的多个元素?

时间:2015-05-07 14:04:26

标签: cassandra cql cassandra-2.0 datastax

我有一个字段 cat_to_pub ,类型为 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'}

我可以使用

从此MAP中删除单个元素
DELETE cat_to_pub[1] FROM user_preferences  WHERE user_id = 'jayeshjain';

如何从此套装中删除多个元素?

例如。如果我想删除键1和2,我该如何形成查询?

2 个答案:

答案 0 :(得分:4)

使用较新版本的cassandra(尝试使用3.7),你可以 update user_preference set cat_to_pub = cat_to_pub - { 1, 2 } where user_id = 'jayeshjain';

答案 1 :(得分: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;