couchbase中的list / array元素访问

时间:2014-09-04 10:21:45

标签: node.js 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}

欢迎评论

2 个答案:

答案 0 :(得分:1)

  

是否可以存储数组

是的,你只需要序列化它

  

添加/删除一个元素

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

答案 1 :(得分:0)

作为替代而不是使用JSON,可以使用二进制格式。这将允许使用追加操作。在这种情况下,对于删除,您可以附加前缀为减号的id。

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

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

在某些时候,你将不得不抓住整个文件并且"清洁"它可以阻止它不受限制地增长。如果删除操作是不太可能的情况,则可能值得抓取整个文档并删除id而不是附加减号。

正适合

  • 减少网络带宽,因为它们不需要获取整个文档
  • 如果订单无关紧要,无需担心CAS或锁定

费用

  • 查看将更难使用
  • 必须创建自定义序列化程序
  • 需要管理文档以阻止它不受限制地增长。

在处理非常大的物体时,这些成本只会超过成本。