文件结构:
{
"Type":"post"
"LastModified":"2010-11-01 21:55",
"CategoryID":3,
"ID":12
}
在不同类别中拥有大量不同的博文文章非常棒。但我似乎无法弄清楚如何制作一个返回按日期排序的文档的视图,当选择例如类别3和5中的文档时。类别未知,限制查询应该仍然有效。
我尝试过不同的视图方法,但没有任何方法可以达到预期的效果。
在SQL中,它可以通过以下方式完成:
SELECT * FROM document WHERE document.CategoryID in (3,5) ORDER BY document.LastModified DESC;
我可以查询这样的视图所需的次数,手动排序和分页数据:
function(doc) {
emit(doc.CategoryID, doc.ID);
}
所以有人知道是否可以避免这样做,并且让couchdb更聪明一点?
答案 0 :(得分:5)
我可以想到两种可能的解决方案。
在地图功能中发出CategoryID
和LastModified
。
function(doc) {
emit([doc.CategoryID, doc.LastModified], null);
}
现在,您可以查询?startkey=[3]&endkey=[3, {}]
的视图,以获取CategoryID=3
按LastModified
排序的所有文档。要获取多个CategoryID的文档,您需要合并排序结果。
使用couchdb-lucene构建索引。 couchdb-lucene可以处理复杂的查询。