我在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
答案 0 :(得分:2)
将时间戳作为第二列发出:
function(doc) { emit([doc.group,doc.timestamp]); }
然后,使用以下参数进行查询:
view?startkey=["foo"]&endkey=["foo",""]
我假设您的时间戳是数字,而不是字符串。阅读this,了解数字时间戳在["foo"]
和["foo",""]
之间的排序方式。
此外,不要发出doc
作为值,它会占用大量存储空间。如果您确实需要该文档,请在查询中使用include_docs=true
。