标签:mysql loops for-loop 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。