Arrays 查找文档数组CouchDB
我有文件他们有这样的结构:Arrays 查找文档数组CouchDB,arrays,find,couchdb,Arrays,Find,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", "re
{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"]
}
我想做一个映射函数查询,在这里我可以看到客户Mike正在使用的所有Cam_名称
我有一个类似的映射函数,但它只显示Cam_名称LxSV Double和客户Mike。我想显示迈克正在使用的所有摄像机名称
我的查询:
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}/{ddoc}/{u 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"
}
]
}
现在,您可以使用相同的视图查找任何客户,而不仅仅是您在地图功能中指定的任何人。我只使用futon。这是什么意思?Futon是一个管理界面,它不是一个真正的通用查询工具。您使用的是什么版本的CouchDB?如果你使用的是一个相当新的版本,你可以看看Futon的替代品,它被称为。它提供了一种在浏览视图时添加查询参数的方法。我使用的是verison 1.6.1。您知道如何生成查询吗?我用Node.js读了一些东西。。但这让事情变得复杂了。我以前从未使用过javascript。你能给我一个简短的一步一步的介绍吗?StackOverflow是一个问答网站,它不是一个如何操作的网站。我鼓励你浏览一个更专注于教程和操作的网站。多亏了多米尼克,我现在保存了我的地图功能。现在如何使用curl查询我的视图?