gpt4 book ai didi

java - Aerospike:如果列表不存在,则自动创建一个列表并将项目附加到该列表

转载 作者:行者123 更新时间:2023-12-01 23:01:55 26 4
gpt4 key购买 nike

aerospike 中的 bin 是一个 Map[String -> List]

我正在尝试实现这样的行为:

bin.computeIfAbsent(key, k -> new List()).addAll(itemsToAdd)

有没有办法在不实现 UDF 的情况下在 Aerospike 中以原子方式执行此操作?如果我正确阅读文档,如果它是一个 Map[String -> Map],我可以使用 CTX.mapKeyCreate 按需创建内部 map ,但我没有看到任何类似的创建列表

更新:这是我正在尝试做的事情

我有一个三胞胎流:

{"pk","attr","value"}

我需要将此流汇入 aerospike 集合,按以下格式通过 pkattr 聚合:

{
"PK":"pk",
"mapBin": {
"attr": ["value"]
}
}

假设流中有三个项目:{"pk","attr1","value1"},{"pk","attr2","value2"},{"pk", “attr1”,“value3”}

他们需要这样降落在气钉上:

{
"PK":"pk",
"mapBin": {
"attr1": ["value1","value3"],
"attr2": ["value2"]
}
}

要插入新项目{"pk","attr2","value2"},我需要执行几个操作:

  1. mapBin[attr2] 获取列表
  2. 如果不存在,则将空List插入到map中
  3. 执行 ListOperation.append 将项目附加到现有列表

问题是:有没有办法在没有 UDF 的情况下自动完成它?

最佳答案

您应该能够使用以下(Java 语法)自动执行这些操作:

record = client.operate(null, pk, 
ListOperation.append("mapBin", Value.get("value2"),
CTX.mapKeyCreate(Value.get("attr2"),
MapOrder.UNORDERED)));

如果有多个项目要追加到列表中,您可以使用 ListOperation.appendItems(),并且在同一个 operate() 中为映射中的不同列表使用多个 ListOperations,所有这些都将自动执行。

关于java - Aerospike:如果列表不存在,则自动创建一个列表并将项目附加到该列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71622439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com