Mapreduce 如何通过单个请求从CouchDB仅获取特定文档的特定字段?
创建一个视图,该视图只返回文档中的一部分值,每个值的键和值都在json字符串中。就像一个给定的视图返回如下文档一样,是否可以为一个请求获取一些字段信息?非常感谢。Mapreduce 如何通过单个请求从CouchDB仅获取特定文档的特定字段?,mapreduce,couchdb,couchdb-futon,Mapreduce,Couchdb,Couchdb Futon,创建一个视图,该视图只返回文档中的一部分值,每个值的键和值都在json字符串中。就像一个给定的视图返回如下文档一样,是否可以为一个请求获取一些字段信息?非常感谢。 { “总行数”:10, “抵消”:3, “行”:[{ “id”:“doc1”, “键”:“abc123”, “价值”:{ “_id”:“aaaa”, “_rev”:“bbb”, “字段1”:“abc”, “字段2”:“bcd”, “字段3”:“cde”, “字段4”:“123”, “字段5”:“789”, “字段6”:aa@emai
{
“总行数”:10,
“抵消”:3,
“行”:[{
“id”:“doc1”,
“键”:“abc123”,
“价值”:{
“_id”:“aaaa”,
“_rev”:“bbb”,
“字段1”:“abc”,
“字段2”:“bcd”,
“字段3”:“cde”,
“字段4”:“123”,
“字段5”:“789”,
“字段6”:aa@email.com",
“字段7”:“ttt”,
“字段8”:“iii”,
“字段9”:[{
“field91”:“tyui”,
“字段92”:“55555”
}],
“字段10”:“0000”,
“字段11”:“55555”,
“字段12”:“0030”。。。。。。。。。
}
}
我只想创建一个只返回以下字段的视图:
{
“字段1”:“abc”,
“字段2”:“bcd”,
“字段3”:“cde”,
“字段4”:“123”,
“字段5”:“789”,
“字段6”:aa@email.com",
“字段7”:“ttt”,
“字段8”:“iii”,
“字段9”:[{
“field91”:“tyui”,
“字段92”:“55555”
}]
}
一种映射函数,它只发送带有选定字段的新文档。例如,让我们只映射字段1(字符串)和字段9(数组):
在上面的示例中,每个文档都将被激发,其中一个键是原始文档ID,值是所需的映射字段。
如果您计划稍后添加reduce函数,这将非常有用
根据您的使用情况,您可能只想发射映射对象:
function map(doc) {
emit({
field1: doc.field1,
field9: doc.field9
});
}
请看
关于构建数据视图的文档非常好,您可以通过实验发现很多。非常感谢您的好建议,并在本例中分享学习材料,如果field1是关键,我可以获得选择的9个字段结果,如doc.field1=“aaa”,如下所示:函数映射(doc){emit(doc.field1),{field1:doc.field1,field2:doc.field2,…field9:doc.field9});}并调用http://...viewName?key=“aaa”,结果包括_id、key和值,但如果我只想用doc.field1=“aaa”获取所有选定字段的值,没有像key和_id那样包括在内,我应该怎么做?我不认为你可以避免那些从CouchDB回来的字段。但是在客户端“去掉”这些字段应该不难,例如:映射到另一个对象(我想使用javascript,如果这是一个web应用的话?)谢谢你,这不是网络应用,我只是在couchdb futon上做了一些练习,我想从结果中“去掉”像_id、key和value这样的第一个字段:,:{“id”:“xxxx”,“key”:“xxxx”,“value”:………..顺便说一句,我可以知道你的电子邮件或其他我可以与你联系的人吗?希望你能建议我,为什么我不能在couchdb中运行结果,如下面的地图,有什么问题吗?函数(doc){var json_data=doc;json_data=json_data.rows;for(var i=0;i
function map(doc) {
emit({
field1: doc.field1,
field9: doc.field9
});
}