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

HIR*_*KUR 4 cql cassandra datastax cassandra-2.0

我有一个类型为MAP的字段cat_to_pub。

{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'}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法从此MAP中删除单个元素

DELETE cat_to_pub[1] FROM user_preferences  WHERE user_id = 'jayeshjain';
Run Code Online (Sandbox Code Playgroud)

如何从该集合中删除多个元素?

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

Dav*_*ago 5

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


And*_*ert 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;
Run Code Online (Sandbox Code Playgroud)