数据库
首页 > 数据库> > mysql – 可以在couchdb做循环

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