查找文档数组 CouchDB
Finding Documents Array CouchDB
我有文档,它们的结构是这样的:
{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。
我有一个类似的地图函数,但这只显示 Cam_Name LxSV Double 和 Customer Mike。我想显示迈克正在使用的所有 Cam_Names。
我的查询:
function(doc){
if(doc.Customer == "Mike"){
emit(doc.Cam_name, doc.Customer)
这个查询给了我不正确的结果。
如果您的查询看起来完全那样,那么您有语法错误。而且,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"
}
]
}
现在,您可以使用同一个视图来查找任何客户,而不仅仅是您在地图功能中指定的任何人。
我有文档,它们的结构是这样的:
{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。
我有一个类似的地图函数,但这只显示 Cam_Name LxSV Double 和 Customer Mike。我想显示迈克正在使用的所有 Cam_Names。
我的查询:
function(doc){
if(doc.Customer == "Mike"){
emit(doc.Cam_name, doc.Customer)
这个查询给了我不正确的结果。
如果您的查询看起来完全那样,那么您有语法错误。而且,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"
}
]
}
现在,您可以使用同一个视图来查找任何客户,而不仅仅是您在地图功能中指定的任何人。