为 couchdb 编写视图
Writing view for couchdb
我在 couchdb 中有这个文档,我希望编写一个视图,它可以发出原始“_id”和 "Body" 中的 id 的键组合,并将值作为正文本身。
基本上如果 "doc" 是 json:
键[_id,"key in Body"]
值 [ doc['_id']['Body'][正文中的键]
json Document
CouchDB 有详细的 guide to views。
视图映射函数可以为每个文档发出多个键值对,因此在您的情况下,您将发出每个 doc.Body
条目。
function(doc) {
if (doc.Body) {
// get an array of own property names in doc.Body
var bodies = Object.keys(doc.Body);
// loop over all the Body entries
bodies.forEach(function (body) {
// emit key-value for each entry
emit([doc._id, body], bodies[body].body);
});
}
}
要从 doc._id = "123"
获取所有主体:
http://my.couch.host/my-db/_design/docname/_view/viewname?startkey=["123"]&endkey=["123",{}]
从 doc._id = "123"
获取 doc.Body.abc
的正文:
http://my.couch.host/my-db/_design/docname/_view/viewname?startkey=["123","abc"]&endkey=["123","abc"]
有关详细信息,请参阅 views collation and complex keys。
我在 couchdb 中有这个文档,我希望编写一个视图,它可以发出原始“_id”和 "Body" 中的 id 的键组合,并将值作为正文本身。
基本上如果 "doc" 是 json:
键[_id,"key in Body"]
值 [ doc['_id']['Body'][正文中的键]
json Document
CouchDB 有详细的 guide to views。
视图映射函数可以为每个文档发出多个键值对,因此在您的情况下,您将发出每个 doc.Body
条目。
function(doc) {
if (doc.Body) {
// get an array of own property names in doc.Body
var bodies = Object.keys(doc.Body);
// loop over all the Body entries
bodies.forEach(function (body) {
// emit key-value for each entry
emit([doc._id, body], bodies[body].body);
});
}
}
要从 doc._id = "123"
获取所有主体:
http://my.couch.host/my-db/_design/docname/_view/viewname?startkey=["123"]&endkey=["123",{}]
从 doc._id = "123"
获取 doc.Body.abc
的正文:
http://my.couch.host/my-db/_design/docname/_view/viewname?startkey=["123","abc"]&endkey=["123","abc"]
有关详细信息,请参阅 views collation and complex keys。