我目前正在尝试按三个值进行排序。但是,让我们开始与文档结构:CouchDB通过三个索引键查询和过滤
{
_id: "DOCIDGOESHERE01",
type: "MESSAGE",
date: "2011-08-24 06:49:02",
author: "USERIDGOESHERE01",
receiver: ["USERIDGOESHERE02", "USERIDGOESHERE03"],
message: "ok let's do this"
}
主要目标是要查询的CouchDB的消息选定用户发送到一个特定的用户和日期排序。一些消息没有任何接收器,表明它们是公开的并且可以被任何人阅读。
地图功能我目前使用的是这样的:
function map(doc) {
if(doc.receiver.lenth==0)
emit([doc.date, null, doc.author], doc._id);
else for(var idx in doc.receiver)
emit([doc.date, doc.receiver[idx], doc.author], doc._id);
}
当查询CouchDB的HTTP接口我tryed请求像
HTTP GET xxx/messages?key=[{}, "USERIDGOESHERE02", {}]
或
HTTP POST xxx/messages
{
keys: [
[{}, "USERIDGOESHERE02", "USERIDGOESHERE01"],
[{}, "USERIDGOESHERE02", "USERIDGOESHERE03"],
[{}, "USERIDGOESHERE02", "USERIDGOESHERE04"],
]
}
但所有这些没有产生我想制作的文件清单。你对这项任务有什么建议吗?或者是不可能用couchDB建立这样的过滤结果? 非常感谢您提前!
感谢您的回复,我不得不认识到,对于couchDB来说,新手首先应该了解的是,没有任何通配符是@ user787145所说的。我学到的另一件事是,事实上,视图可以从一个起始索引读到给定的结束索引,而不会在创建视图后从列表中过滤掉一些文档。这导致了观点本身必须包括过滤特征的结论。无论如何,似乎你的第三种方法是最适合我的用例。 – sics