我有一个非常简单的 map ,只有一个键,值是一个列表。
client.put(key,
{bin_name:
{
1523474230000: ['fav', 'fav1']
}
}
)
我只想使用操作命令向此列表添加一个值,以保持原子性。我不知道该怎么做。
map_operations
似乎没有所需的 API
list_operations.append_list
不是正确的 API。
这一定是键值存储中执行的最常见操作之一。因此,我对自己无法找到这些简单操作的答案感到非常困惑。
我可以在操作命令中组合map_operations和list_operations吗?如果是这样,怎么办。 将不胜感激任何帮助。
免责声明 - 我在 Aerospike 工作,而且是新人。我将其发布到 SO,以便它也使其他社区成员受益。
最佳答案
事实证明,在 Aerospike 中这是一件 super 简单的事情。您所需要的只是这个称为上下文的实体。有关上下文的更多详细信息 here
因此将该上下文应用于上面的示例
client.put(key,
{bin_name:
{
1523474230000: ['fav', 'fav1']
}
}
)
ctx = [
cdt_ctx.cdt_ctx_map_key(1523474230000)
]
ops = [
# We want to append to a list, so we use a list_operation. The top level being a map is dealt with using ctx.
list_operations.list_append(bin_name, 'val2', ctx=ctx),
]
client.operate(key, ops)
_, _, result = client.get(key)
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(result)
结果:
{'complex_map_bin': {1523474230000: ['fav', 'fav1', 'val2']}}
关于python - Aerospike 数据库 - 如何附加到作为 map 值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61938680/