2

我在 CouchDB 中有一些带有timestamp字段和group字段的项目。我使用此视图函数来获取 group == "foo" 的所有项目的列表:

{
  "map" : "function(doc) { emit(doc.group, doc); }"
}

http://localhost:5984/my_database/_temp_view?key="foo"

现在我想让输出按timestamp字段排序。我怎么做?基本上,我想要这个 SQL 查询的等价物:

SELECT * FROM SomeTable WHERE group=? ORDER BY timestamp

4

1 回答 1

2

将时间戳作为第二列发出:

function(doc) { emit([doc.group,doc.timestamp]); } 

然后,使用以下参数进行查询:

view?startkey=["foo"]&endkey=["foo",""]

我假设您的时间戳是数字,而不是字符串。阅读本文["foo"]以了解如何在和之间对数字时间戳进行排序["foo",""]

另外,不要doc作为值发出,它会占用大量存储空间。如果您确实需要该文档,include_docs=true请在您的查询中使用。

于 2012-04-30T21:22:34.093 回答