在couchbase中访问列表/数组元素

有没有可能存储一个数组

var a=[ {"id":"1", "value":null}, {"id":"2", "value":null}, {"id":"3", "value":null}, {"id":"4", "value":null}, {"id":"5", "value":null} ]; 

在带有文档ID的couchbase membase中

如果确定,是否有办法获得一个元素,如

  {"id":"2", "value":null} 

并添加/删除一个元素,如

  {"id":"6", "value":null} 

您的评论欢迎

有没有可能存储一个数组

是的,你只需要序列化它

并添加/删除一个元素

不,您将需要通过id请求所有文档,将其反序列化到数组,删除元素,序列化数组和更新文档。

作为替代,而不是使用JSON,可以使用二进制格式。 这将允许使用附加操作。 在这种情况下,您可以添加带有减号前缀的ID。

例如,数据可能如下所示:

 id:"1",value:"null" id:"2",value:"null" -id:"1" 

在某些时候,你将不得不抓住整个文件,并“清理”它,以防止它无限增长。 如果删除操作是不太可能的情况下,那么可能是值得抓住整个文件,并删除id而不是附加减号。

应景

  • 减lessnetworking带宽,因为他们不需要获取整个文档
  • 无需担心CAS或locking,如果命令没有关系

成本

  • 视图将更难使用
  • 必须创build一个自定义的序列化程序
  • 将需要pipe理的文件,以阻止它发展无界。

在处理非常大的物体时,这个好处只会大于成本。