在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理的文件,以阻止它发展无界。
在处理非常大的物体时,这个好处只会大于成本。