首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Aerospike在嵌套对象中添加新的键/值对

Aerospike在嵌套对象中添加新的键/值对
EN

Stack Overflow用户
提问于 2018-10-16 21:10:26
回答 2查看 393关注 0票数 4

在Aerospike中,如何在类型为map的bin中存储的嵌套对象中添加新的键/值对?

对于ex,我有一个类型为map的bin,我需要针对它存储以下键/值对。

{
  "a" : "apple",
  "b" : "ball",
  "c" : { "d" : "dog", "e" : "elephant" }, 
  "f" : { "g" : { "h" : "horse" } },
  "i" : { "j" : "jackal", "k" : { "l" : "lion", "m" : "monkey" } }
}  

现在,我想针对键"k“更新一个现有的嵌套对象,以添加另一个键值对,如下所示。

"k" : { "l" : "lion", "m" : "monkey", "n" : "nest" }

最终结果应该如下所示。

{
  "a" : "apple",
  "b" : "ball",
  "c" : { "d" : "dog", "e" : "elephant" }, 
  "f" : { "g" : { "h" : "horse" } },
  "i" : { "j" : "jackal", "k" : { "l" : "lion", "m" : "monkey", "n" : "nest" } }
}  

对如何实现这一点有什么建议吗?这是一个NodeJS (10.6.0)应用程序&我正在使用NodeJS aerospike客户端(3.6.1)与Aerospike (4.3.0.7)进行交互。

EN

回答 2

Stack Overflow用户

发布于 2019-11-26 10:52:05

现在可以使用Aerospike server version 4.6或更高版本以及Aerospike Node.js client version 3.12或更高版本更新嵌套的CDT映射和列表。该更新引入了withContext() function on list和map操作,允许您指定在其中执行list/map操作的上下文。您可以在新CdtContext class的文档中找到更多信息。

下面是如何执行示例中给出的更新:

const Aerospike = require('aerospike')
const maps = Aerospike.maps

Aerospike.connect().then(async (client) => {
  const key = new Aerospike.Key('test', 'test', 'test')

  const map = {
    "a" : "apple",
    "b" : "ball",
    "c" : { "d" : "dog", "e" : "elephant" },
    "f" : { "g" : { "h" : "horse" } },
    "i" : { "j" : "jackal", "k" : { "l" : "lion", "m" : "monkey" } }
  }
  console.log('BEFORE:', map)
  await client.put(key, map)

  await client.operate(key, [
    maps.put('i', 'n', 'nest')
        .withContext((ctx) => ctx.addMapKey('k'))
  ])
  const record = await client.get(key)
  console.log('AFTER:', record.bins)

  client.close()
}).catch((error) => {
  console.error(error)
  if (error.client) error.client.close()
})

以下是您在运行示例时将获得的结果:

$ node nested-map-update-example.js
BEFORE: {
  a: 'apple',
  b: 'ball',
  c: { d: 'dog', e: 'elephant' },
  f: { g: { h: 'horse' } },
  i: { j: 'jackal', k: { l: 'lion', m: 'monkey' } }
}
AFTER: {
  a: 'apple',
  b: 'ball',
  c: { d: 'dog', e: 'elephant' },
  f: { g: { h: 'horse' } },
  i: { j: 'jackal', k: { l: 'lion', m: 'monkey', n: 'nest' } }
}
票数 8
EN

Stack Overflow用户

发布于 2018-10-17 07:55:35

您必须更新键"i“的全值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52836233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档