2012-04-30 41 views
2

我在CouchDB中有一个timestamp字段和一个group字段。我用这个视图函数来获取所有项目,其中组==“foo”的名单:CouchDB中的过滤和排序视图?

{ 
    "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

回答

2

发射时间戳为第二个柱:

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

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

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

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

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

+0

谢谢,这正是我所需要的。 –