文档结构:
{
"Type":"post"
"LastModified":"2010-11-01 21:55",
"CategoryID":3,
"ID":12
}
拥有一堆不同类别的不同博士后非常棒。但是,当选择类别 3 和 5 中的文档时,我似乎无法弄清楚如何创建一个返回按日期排序的文档的 View 。类别未知,限制查询应该仍然有效。
我尝试了不同的 View 方法,但没有一种方法能够接近达到预期的结果。
在 SQL 中,可能可以通过以下方式完成:
SELECT * FROM document WHERE document.CategoryID in (3,5) ORDER BY document.LastModified DESC;
我可以只查询这样的 View 所需的次数,手动对数据进行排序和分页:
function(doc) {
emit(doc.CategoryID, doc.ID);
}
那么有谁知道是否可以避免这样做,而只是让 couchdb 变得更聪明一点?
最佳答案
我可以想到两种可能的解决方案。
同时发出
CategoryID
和LastModified
在 map 功能中。function(doc) { emit([doc.CategoryID, doc.LastModified], null); }
现在您可以在 View 中查询
?startkey=[3]&endkey=[3, {}]
获取所有带有CategoryID=3
的文档排序方式LastModified
。要获取多个 CategoryID 的文档,您需要合并排序结果。使用couchdb-lucene建立索引。 couchdb-lucene可以处理复杂的查询。
关于couchdb - 查询多个特定键后按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127016/