我有他们有这种结构的文件:
{id: ####,
rev: ####,
"Cam_name": "Camera SX",
"colour": "white",
"manufacturer": "Sony",
"rec_limit": 180,
"Customer": ["Mike","Ann","James"]
}
{id: ####,
rev: ####,
"Cam_name": "PXSV CAM",
"colour": "white",
"manufacturer": "LG",
"rec_limit": 144,
"Customer": ["Mike","Oliver","Mr. Rain"]
}
{id: ####,
rev: ####,
"Cam_name": "LxSV Double",
"colour": "white",
"manufacturer": "Phillips",
"rec_limit": 160,
"Customer": ["Mike"]
}
我想创建一个MAP函数查询,在那里我可以看到客户Mike正在使用的所有Cam_Names。
我有一个simillar Map Function但这只显示了Cam_Name LxSV Double和只有Customer Mike。我想要显示迈克正在使用的所有Cam_Names。
MyQuery:
function(doc){
if(doc.Customer == "Mike"){
emit(doc.Cam_name, doc.Customer)
这个查询给了我不正确的结果。
答案 0 :(得分:2)
如果您的查询看起来像那样,则会出现语法错误。但是,doc.Customer
是一个数组,因此您无法进行简单的相等检查。
但是检查数组中是否存在值是完全没必要的,你的map函数可以看起来像这样:
function (doc) {
doc.Customer.forEach(function (customer) {
emit(customer, doc.Cam_name);
});
}
然后,使用/{db}/_design/{ddoc}/_view/{view}?key="Mike"
您的输出将如下所示:
{
"total_rows": 3,
"offset": 0,
"rows": [
{
"id": "####",
"key": "Mike",
"value": "Camera SX"
},
{
"id": "####",
"key": "Mike",
"value": "PXSV CAM"
},
{
"id": "####",
"key": "Mike",
"value": "LxSV Double"
}
]
}
现在,您可以使用相同的视图查找任何客户,而不仅仅是您在地图功能中指定的任何客户。