CouchDB中的过滤和排序视图?

时间:2012-04-30 21:07:19

标签: javascript json couchdb

我在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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

我假设您的时间戳是数字,而不是字符串。阅读this,了解数字时间戳在["foo"]["foo",""]之间的排序方式。

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