我有像
这样的文件{_id:1,
name:"john"
}
{_id:2,
name:"john boss"
}
{_id:3,
name:"jim"
}
我必须搜索john存储在文档中的数据。假设,如果我搜索“john”文件应该_id:1& _id:2个相关数据。请指导我获得结果。
如果有人提供解决方案,我感激不尽。
答案 0 :(得分:0)
我建议CouchDB view向您显示"name
字段中的所有“字词”。
function(doc) {
// map function: _design/example/_view/names
if(!doc.name) // Optionally do more testing for doc type, etc. here.
return
// Emit one row per word in the name field (first name, last name, etc.).
var words = doc.name.split(/\s+/)
for(var i = 0; i < words.length; i++)
emit(words[i].toLowerCase(), doc._id)
}
现在,如果您查询/db/_design/example/_view/names?key="john"
,您将获得两行:一行用于doc id 1,另一行用于id 2.我还添加了一个转换为小写,因此搜索“john”将匹配名为的人“约翰”。
可能是重复:多次列出相同的文档ID,例如{"name":"John John"}
;但是你可以保证所有重复的行都是相邻的。
您还可以在请求中添加?include_docs=true
以获取每行的完整文档。