CouchDB , .:)
, , : .
CouchDB MapReduce, JavaScript ( Python, Ruby, Erlang ). MapReduce . .
CouchDB API HTTP, - HTTP- (GET, POST, PUT, DELETE) URL-. MapReduce ( JavaScript), URL-, .
1. id
- :
GET /db/{article_id}
GET /db/{author_id}... {author_id} - , author_id .
2.
MapReduce
function (doc) {
if (doc.type === 'article') {
emit(doc.author_id, doc);
}
}
GET /db/_design/cms/_view/articles_by_author?key="{author_id}"... {author_id} - .
3. 10 ,
MapReduce
function (doc) {
function arrayDateFromTimeStamp(ts) {
var d = new Date(ts);
return [d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds()];
}
var newdoc = doc;
newdoc._id = doc.author_id;
newdoc.created_at = arrayDateFromTimeStamp(doc.created_at);
if (doc.type === 'article') {
emit(newdoc.created_at, newdoc);
}
}
"" CouchDB, ?include_docs=true . "_id" emit ( ), include_docs=true , "_id". "_id" ( ) "_id" ( "author_id" ). 10 :
GET /db/_design/cms/_view/articles_by_date?descending=true&limit=10&include_docs=true
URL- 10 , :
{"rows":[
{ "id":"article_id",
"key":[2011, 9, 3, 12, 5, 41],
"value":{"_id":"author_id", "title":"..."},
"doc":{"_id":"author_id", "name":"Author Name"}
}
]}, , , , .. .
(, CMS, ). , , CouchConf : http://www.slideshare.net/Couchbase/couchconfsfdesigningcouchbasedocuments
, , .