我正在使用ScalarDB它在Cassandra. 参考文档,与和有何PutIf不同?PutIfExistsPutIfNotExists
我想
PutIfExists就像一个更新
PutIfNotExists就像一个新的添加
什么是 PutIf?什么时候使用它?
我正在使用ScalarDB它在Cassandra. 参考文档,与和有何PutIf不同?PutIfExistsPutIfNotExists
我想
PutIfExists就像一个更新
PutIfNotExists就像一个新的添加
什么是 PutIf?什么时候使用它?
PutIf可以添加条件来更新记录。您可以在没有任何其他条件的情况下PutIfExists只想更新时使用。另一方面,PutIfNotExists当您想要插入新记录而不会意外覆盖时,您必须使用。
例如,一个表有如下记录。pass如果分数大于等于 60,我们想更新一条记录。(我们假设之前已经插入了记录,并且我们已经计算了阈值(均值、中位数等),那么我们决定 ID 可以是否通过门槛。)
|pID|cID|score| pass|
| 0| 0| 80|false|
| 1| 0| 45|false|
以下put将更新要设置的第一true条记录pass。
PartitionKey pk = new Key(new IntValue("pID", 0));
ClusteringKey ck = new Key(new IntValue("cID", 0));
PutIf condition = new PutIf(new ConditionalExpression("score", new IntValue(60), Operator.GTE));
Put put = new Put(pk, ck).withValue(new BooleanValue("pass", true)).withCondition(condition);
storage.put(put);
如果我们尝试用相同的条件更新第二条记录,它不会被更新,因为分数小于 60。