【问题标题】:Aerospike database - How do I append to a list that is a value of a mapAerospike 数据库 - 如何附加到作为地图值的列表
【发布时间】:2020-05-21 16:02:30
【问题描述】:

我有一个非常简单的地图,只有一个键,值是一个列表。

client.put(key, 
            {bin_name:
                {
                    1523474230000: ['fav', 'fav1']
                }
            }
)

我只想使用操作命令在此列表中再添加一个值,以保持原子性。我不知道该怎么做。

map_operations 似乎没有所需的 API list_operations.append_list 不是正确的 API。

这必须是键值存储中最常见的操作之一。所以我对自己无法找到这些简单操作的答案感到非常困惑。

我可以在操作命令中加入 map_operations 和 list_operations 吗?如果是这样,如何。 将不胜感激。

免责声明 - 我在 Aerospike 工作,我是新人。我将其发布在 SO 上,以便其他社区成员也能从中受益。

【问题讨论】:

    标签: python aerospike


    【解决方案1】:

    事实证明,这在 Aerospike 中是一件非常简单的事情。您所需要的只是这个称为上下文的实体。有关上下文的更多详细信息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']}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      相关资源
      最近更新 更多