Couchbase startkey_docid没有像我们预期的那样工作

时间:2013-11-11 20:45:09

标签: java couchbase

所以似乎startkey_docid没有像我们期望的那样使用couchbase。

我们确实定义了一个startkey,并且与日期配合得很好,但是当与startkey_docid结合使用时,我们没有看到预期的结果。使用complexKey是不可能的?

我们通过REST接口直接调用Couchbase,我们正在使用Java客户端,但是直接在这里调用以消除客户端中的错误。

注意日期数组的复杂键:

startkey=[[2013,11,11,23,12,0],"EVERYONE"]&startkey_docid=41070cfc-a85c-424c-9b87-fce0616c77c1&skip=1&descending=true

查看:

function (doc, meta) 
{
  if(meta.type == "json" && doc.type == "POST" && doc.created != null) 
  {
    emit([dateToArray(doc.created), doc.visibility], null);
  }
}

注意结果中只跳过4行是第一行。 startkey_docid实际上是中间结果,所以我们期望只有最后一个doc。为什么?因为我们的理解是调用应该从该文档开始,并跳过它只显示最后一行。是否有错误或我们遗漏的东西?

{
    total_rows: 4,
    rows: [{
        id: "6e57a775-1e96-4ac3-95c1-f2218355aa3d",
        key: [ [2013, 11, 11, 20, 29, 19], "EVERYONE"],
        value: null
    }, {
        id: "41070cfc-a85c-424c-9b87-fce0616c77c1",
        key: [ [2013, 11, 11, 20, 28, 21], "EVERYONE"],
        value: null
    }, {
        id: "a4a6cf44-8a82-494a-a2b9-f6a3ec629f17",
        key: [ [2013, 11, 8, 1, 17, 46], "EVERYONE"],
        value: null
    }]
}

1 个答案:

答案 0 :(得分:0)

这没有正确记录,这导致我遇到与您类似的问题。要使其正常运行,您需要传入最后一个文档的docid,并将最后一个文档的密钥设置为startkey 。如果您每次分页时都不更改startkey,那么您将一遍又一遍地获得相同的页面。