gpt4 book ai didi

mysql - couchdb 可以做循环吗

转载 作者:行者123 更新时间:2023-11-29 02:05:59 25 4
gpt4 key购买 nike

couchdb 可以做循环吗?

假设我有一个包含 3 个字段的兴趣数据库主题 1、主题 2、主题 3。例如,猫、营养、头发或太空、望远镜、光学等。

一个人 (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);
}
}

您的查看结果将如下所示:

  • 计算机 => 人 A
  • 计算机 => 人 B
  • 钓鱼 => 人 A
  • 游戏 => 人 B
  • 游戏 => 人 D
  • 远足 => C
  • 运动 => 人 A
  • 运动 => C

要获得对计算机感兴趣的人的列表,您只需将 key="computers" 作为查询字符串的一部分发送即可。

如果你想在你的 map 上添加一个 reduce 函数,你可以简单地使用 _count(使用已编译的 reduce 函数的快捷方式),你可以检索所有有特定兴趣的人的数量,您甚至可以使用它来限制您查询哪些兴趣来建立您的关系。

关于mysql - couchdb 可以做循环吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com