Я пытаюсь получить преимущества сопоставления представлений в CouchDB безуспешно, может кто-нибудь проверить, что не так в моем случае?
Во-первых, я опираюсь на http://www.cmlenz.net/archives/2007/10/couchdb-joins
Затем я хочу реализовать дерево, связанное parent_id, например:
|- Li
|- test
|- tester
, которое в CouchDB:
{"_id":"root","name":"Li","completed":true},
{"_id":"102ef7e2e99db3983a3bb60a490015db","parent_id":"root","name":"test","completed":false},
{"_id":"102ef7e2e99db3983a3bb60a4900209e","parent_id":"102ef7e2e99db3983a3bb60a490015db","name":"tester","completed":false}
Итак, у меня определено следующее представление:
items : {
map : function(doc){
emit([doc._id, 0], doc);
emit([doc.parent_id, 1], doc);
}
}
И ожидаемый запрос для startKey = ["root"] возвращает только два корневых документа, и это только прямой дочерний элемент, но запрос возвращает все (дублированные) документы, т.е. фильтрация по ключу не работает для меня.
В чем может быть проблема?
Вы можете увидеть DB в http://yo.iriscouch.com/_utils/database.html?cats
Тогда запрос http://yo.iriscouch.com/cats/_design/app/_view/items?startKey=[%22root%22] вернет точно так же, как и без каких-либо аргументов, то есть похоже, что startKey игнорируется.
Я тоже безуспешно пробовал startKey = ["root", 0] & endKey = ["root", 2].
Спасибо.