Спасибо за ваш ответ! Поскольку ответ @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? Заранее большое спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос