我的couchbase-db中有一个活动桶,我需要检索不同类型的最新文档,我最初的方法是:
文件格式:[id,{val.time,val.type,val.load}]
然后我写了不同的视图来映射一个特定的val.type我使用reduce来获取最新的val.time,但是我有视图没有更新的问题(原因显然Map只在新的或更改的文档上调用,这个方法需要映射和减少所有文档 . )
基于时间的Couchbase(NoSQL)数据库数据的最佳实践/方法是什么?
您可以通过以下简单视图按时访问文档:
将您的时间转换为整数值 . 例如,使用 parse() 方法 . http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm
parse()
使用此整数值作为视图的键 . 然后,您可以访问第一个或最后一个文档 .
如果您总是需要最后一个文档,则更快地否定时间值,因此最大的时间是索引的开头 .
如果您使用的是开发设计文档,则应该在存储桶中添加新密钥可能对视图没有影响 . 由于只有来自存储桶的密钥子集进入Map / Reduce管道,因此添加未进入子集的密钥将不会触发对视图的更新 .
在 生产环境 设计文档上进行评估(通过单击“发布”按钮),或尝试添加更多密钥 .
2 回答
您可以通过以下简单视图按时访问文档:
将您的时间转换为整数值 . 例如,使用
parse()
方法 . http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm使用此整数值作为视图的键 . 然后,您可以访问第一个或最后一个文档 .
如果您总是需要最后一个文档,则更快地否定时间值,因此最大的时间是索引的开头 .
如果您使用的是开发设计文档,则应该在存储桶中添加新密钥可能对视图没有影响 . 由于只有来自存储桶的密钥子集进入Map / Reduce管道,因此添加未进入子集的密钥将不会触发对视图的更新 .
在 生产环境 设计文档上进行评估(通过单击“发布”按钮),或尝试添加更多密钥 .