2013-04-02 4 views
2

Я хочу фильтровать документы по значению, содержащему массив в поле ключа, который возвращает созданный мной проект.
Фильтр с ключом массива в CouchDB

// _design/products/_view/all 
function(doc) { 
    if (doc.type && doc.type == 'producto'){ 
     emit([doc.created, doc.user], doc); 
    } 
} 

Результат:

 
{"total_rows":3,"offset":0,"rows":[ 
{"id":"64243f77b5135758d1f0d55c250001f5","key":[1364931254000,"samuelb1311"],"value":{"_id":"64243f77b5135758d1f0d55c250001f5","_rev":"3-50f67780d6388f3aad469dbdd1081b9e","nombre":"limon","precio":250,"user":"samuelb1311","created":1364931254000,"type":"producto"}}, 
{"id":"64243f77b5135758d1f0d55c2500058e","key":[1364931381000,"samuel123"],"value":{"_id":"64243f77b5135758d1f0d55c2500058e","_rev":"3-c1f893af011ee5a3687b0a9eeedc3467","nombre":"lima","precio":360,"user":"samuel123","created":1364931381000,"type":"producto"}}, 
{"id":"64243f77b5135758d1f0d55c25000e7a","key":[1364931447000,"samuelb1311"],"value":{"_id":"64243f77b5135758d1f0d55c25000e7a","_rev":"3-2b05730dfcf3407b7335ec029e5cfdc5","nombre":"naranja","precio":25,"user":"samuelb1311","created":1364931447000,"type":"producto"}} 
]} 

мне нужна дата в ключе для сортировки информации в порядке возрастания и убывания от первого вставлено до последнего вставлено и наоборот.
Итак, как я могу фильтровать информацию пользователем, например, пользователем «samuelb1311» или пользователем «samuel123»?
Я пробую вещи как startkey и endkey, но это не работает для меня, это возвращает пустой ответ.
Спасибо за некоторую информацию, которую вы можете принести мне!

ответ

2

Вам необходимо изменить порядок или временную метку и пользователя, чтобы иметь возможность получать только записи для определенного пользователя. Это потому, что, когда вы хотите использовать startkey/endkey, вы можете получать только непрерывный диапазон из записей, отсортированных по ключу. Затем используйте Клавишапуск и EndKey так:

startkey=["foo"]&endkey=["foo","a"] 

Посмотри http://wiki.apache.org/couchdb/View_collation?action=show&redirect=ViewCollation.

+0

Я пытаюсь что-то вроде этого: LOCALHOST:? 5984/отбросов/_design/Productos/_view/все нисходящие = истинные и StartKey = [{}] & EndKey = [0, "samuelb1311"] Но это возвращение всех данных все пользователи, поэтому, не работают. –

+1

Я думаю, вы неправильно поняли, что сказал @thejh. Вам нужно изменить свой излучатель на emit ([doc.user, doc.created], ...), ваш стартовый ключ будет ["samuelb1311"], ваш конечный ключ ["samuelb1311", {}] – ddouglascarr

+0

, но если я сделайте это, порядок продуктов будет в алфавитном порядке от имени пользователя –

Смежные вопросы