0

假设我的存储桶中有 4 个文档:
doc-1:

{
  "created_time": 1435819571221,
  "field_1": false,
  "field_2": false,
  "version": 2
}

文件 2:

{
  "created_time": 1435819571221,
  "field_1": true,
  "field_2": false,
  "version": 3
}

文件 3:

{
  "created_time": 1435819571221,
  "field_1": true,
  "field_2": true,
  "version": 10
}

文件 4:

{
  "created_time": 1435819571221,
  "field_1": true,
  "field_2": true,
  "version": 12
}

我想查询版本> = 10的所有文档。
所以我创建了一个将版本作为键发出的视图,认为我可以使用 startKey x 查询以获取比 x 更新的所有版本。

问题是 couchbase 按字典顺序进行查询。
因此,在上面的示例中,我将取回所有 4 个文档。
我怎样才能让它以自然的数字顺序工作?

谢谢,迈克尔

4

2 回答 2

1

我可能没有正确理解,但是当我尝试您提到的内容时,我收到了预期的两个结果:

为了测试我做了以下事情:

  1. 创建了一个新存储桶
  2. 使用您指定的数据创建了四个文档
  3. 使用以下代码创建了一个视图(我认为 StackOverflow 格式不正确):

    功能(文档,元){发出(doc.version,null);}

  4. 向视图添加了一个过滤器,使其 startKey 为 10,然后查询结果

在结果中,我收到了版本 10 和版本 12。

我提到的文档可以在这里找到:

http://docs.couchbase.com/admin/admin/Views/views-querySample.html

如果我误解了或者这是否解决了您的问题,请告诉我。

问候,

于 2015-07-02T15:09:23.570 回答
0

好吧,这是我的错误 - 在我的示例中,我发出的键是一个数字,但在我实际面对的场景中,键是带有数字的字符串,例如:
“id::20::some@email1.com”,“ id::22::some@email2.com”、“id::100::some@email3.com”。
因此,当我使用 startKey="id::20" 进行范围查询时,它没有返回“id::100::some@email3.com”文档,因为它按字典顺序排序......

谢谢 - 你帮助我理解我的错误......
迈克尔

于 2015-07-05T09:43:29.310 回答