mysql – 可以在couchdb做循环
作者:互联网
couchdb可以做循环吗?
假设我有一个包含3个字段的兴趣数据库
subject1,subject2,subject3.例如,猫,营养,头发或空间,望远镜,光学等.
一个人(A)有10个利益,每个利益由3个领域组成.
另外10个人B,C,D ……有10个兴趣,每个兴趣由3个科目组成.
当人A登录时,我希望系统搜索具有匹配兴趣的所有人.
在javascript中我通常会遍历所有兴趣,然后找到我猜想使用的匹配的
两个循环.然后将匹配项存储在用户的另一个数据库中,如“matchinginterests”.
与mysql相比,在couchdb中有没有简单的方法可以做到这一点 – 这看起来非常复杂.
谢谢,
担
解决方法:
我想我明白你在问什么. Map / Reduce的答案非常简单.
假设您有以下人员文件:
{
"name": "Person A",
"interests" [ "computers", "fishing", "sports" ]
}
{
"name": "Person B",
"interests" [ "computers", "gaming" ]
}
{
"name": "Person C",
"interests" [ "hiking", "sports" ]
}
{
"name": "Person D",
"interests" [ "gaming" ]
}
您可能希望将您的密钥作为兴趣发布,其值为人名(或_id).
function (doc) {
for (var x = 0, len = doc.interests.length; x < len; x++) {
emit(doc.interests[x], doc..name);
}
}
您的查看结果如下所示:
> computers =>人A
> computers =>人B.
>钓鱼=>人A
> gaming =>人B.
> gaming =>人D.
>徒步旅行=>人C.
> sports =>人A
> sports =>人C.
要获得计算机感兴趣的人员列表,您只需发送key =“computers”作为查询字符串的一部分.
如果你想在你的地图上添加一个reduce函数,你可以简单地使用_count(使用编译的reduce函数的快捷方式),你可以检索所有特别感兴趣的人的计数,你甚至可以使用它来限制哪些兴趣您查询以建立您的关系.
标签:mysql,loops,for-loop,couchdb 来源: https://codeday.me/bug/20191002/1845277.html