Mic*_*ael 5 java couchbase couchbase-view
我一直在试图找出如何根据时间戳恢复数据.基本上我想基于时间戳字段查询100个文档.100个文档应该比我传递它的时间戳更旧.此外,我想创建一个刷新,我可以传递一个时间戳,我得到100个更新的文档.显然逻辑在这里会有所不同,但很难弄清楚Couchbase如何实现这一目标.
这是我到目前为止:
我的观点,正如你所看到的,我还需要使用复杂的密钥,因为我不仅要检查日期,还要检查我的可见性字段.我在视图的reduce部分没有任何内容.
function (doc, meta)
{
if(meta.type == "json" && doc.type == "POST" && doc.created != null)
{
emit([dateToArray(doc.created), doc.visibility], null);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在查询使用java客户端,将limit设置为2进行测试.这里有什么奇怪的是setDescending必须是false才能得到任何回报.我传递的日期也无关紧要我总能得到一个结果.我想要的预期行为是传递日期,只获得等于或早于日期的结果.
View view = client.getView("dev_posts", "post_list");
ComplexKey keys = ComplexKey.of(DataConstants.getDateAsArray(startDate), postType);
Query query = new Query();
query.setRangeStart(keys);
query.setIncludeDocs(true);
query.setLimit(2);
query.setDescending(false);
ViewResponse response = client.query(view, query);
Run Code Online (Sandbox Code Playgroud)
编辑:
基本上我从Couchbase寻找的东西类似于Facebook,Pintrest等移动应用程序.在用户刷新的给定时间戳上,我想获得更新的东西.当用户滚动时,我想让下一个组超过特定日期.
**更新**
所以这已经解决了,但是要进一步研究它.ComplexKey正在将我们的日期数组转换为"[2013,11,8,20,0,0]"而不是[2013,11,8,20,0,0].要进一步调查它.现在解决的办法是不使用ComplexKey,而是创建我们自己的复杂密钥,并将其作为密钥传递给startKey.
您可以使用具有两级层次结构的参考文档系统。在第一级文档中,这些 id 是时间戳(Ref::)。它们应该包含您最终文档的 ID。在第二级文档中,包含所有引用的 ID。来自第一级的文件。如果参考文献数量过多,可以使用第三级参考文献。如果有些事情不完全清楚,请告诉我,我会尝试以不同的方式解释。
PS您也可以使用ElasticSearch。这将使您有机会执行任何请求,而无需创建参考文档的层次结构,但可能会出现内存和延迟复制的问题。