Спасибо за ваш ответ! Поскольку ответ @JasonSmith был более подробным, я решил пометить его ответ как ответ, но мне тоже понравился ваш ответ!
тоящее время я пытаюсь упорядочить и отсортировать по ключу с тремя значениями. Но давайте начнем со структуры документа:
{
_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);
}
Запрашивая HTTP-интерфейс couchDB, я пробовал такие запросы:
HTTP GET xxx/messages?key=[{}, "USERIDGOESHERE02", {}]
или же
HTTP POST xxx/messages
{
keys: [
[{}, "USERIDGOESHERE02", "USERIDGOESHERE01"],
[{}, "USERIDGOESHERE02", "USERIDGOESHERE03"],
[{}, "USERIDGOESHERE02", "USERIDGOESHERE04"],
]
}
но все они не привели к списку документов, которые я хотел представить. Есть ли у вас какие-либо предложения с этой задачей? Или невозможно создать такие отфильтрованные результаты с помощью couchDB? Заранее большое спасибо!