У меня есть база данных couchDB, которая имеет несколько разных типов документов, которые все относятся к основному «типу».couchDB сортировочный комплексный ключ
В общий блог/пост Например, основной тип является блог, а остальные комментарии (хотя есть 3 различных типа комментариев.
Все типы имеют дату на них, однако Я хочу, чтобы сортировать сообщения пользователя по дате, но вернуть все данные из замечаний, а я могу написать Emit, который производит ключи так:.
[date, postID, docTypeNumber]
где docTypeNumber является 1 для поста и> 1 для различные типы документов комментариев.
eg:
["2013-03-01", 101, 1]
[null, 101, 2]
[null, 101, 2]
[null, 101, 3]
["2013-03-02", 101, 1]
[null, 102, 2]
[null, 102, 3]
Конечно, если я испущу это, все нули будут отсортированы вместе. Есть ли способ игнорировать нули и группировать их по элементу seccond в массиве, но сортировать их по первому, если он не равен нулю?
Или, мне нужно получить все документы для записи даты публикации, чтобы сортировать работу?
Я не хочу использовать списки, они слишком медленны, и я имею дело с потенциально большим набором данных.
Спасибо за ваш ответ. Я думаю, что здесь что-то не хватает. С первым вариантом не сортирует ли он по первому элементу массива? Если нет, то как он знает сортировать по postID? Я очень взволнован вашим ответом, если вы правы couchDB только лучше для меня. – ddouglascarr
Я думаю, что предпочел бы вторую форму над 1-м. Однако первый по-прежнему будет работать. Ваша сортировка просмотров для сообщений будет эффективно '[101, x]'. Соответствие вашей даты для дат будет чем-то вроде '[2013-03-07, x, x]'. И вы также можете запросить дату и дату '[2012-03-07, 101, x]'. Обратите внимание, что оба представления зависят от того, что postID и дата никогда не имеют одинакового значения. –
Ни один из вариантов не работает, когда я запрашиваю представление. Он сортируется с передней стороны массива, поэтому сравнивает postID post с датой комментария. Все ваши идентификаторы сообщений указаны, а затем все ваши сообщения. Есть ли опция, которую вы можете передать, когда вы запрашиваете представление, чтобы сделать его другим? – ddouglascarr