gpt4 book ai didi

mapreduce - 在 couchbase 中编写 reduce 函数

转载 作者:行者123 更新时间:2023-12-05 01:09:10 24 4
gpt4 key购买 nike

这是我第一次尝试 couchbase。我的 json 文档如下所示:

{
"member_id": "12345",
"devices": [
{
"device_id": "1",
"hashes": [
"h1",
"h2",
"h3",
"h4"
]
},
{
"device_id": "2",
"hashes": [
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"h7"
]
}
]
}

我想创建一个 View ,它告诉我给定哈希的所有 member_ids。

像这样的东西:
h1["12345","233","2323"]  //233,2323 are other member id    
h2["12345"]
member_id应该在集合中出现一次。

我写了一个 map 功能
function (doc, meta) {
for(i=0;i< doc.devices.length;i++)
{
for(j=0;j< doc.devices[i].hashes.length;j++) {
emit(doc.devices[i].hashes[j],null)
}
}
}

这返回
h1 "12345"
h1 "12345"
h2 "12345"
h1 "233"

但我无法从这里继续前进。我应该如何更改我的 map 功能以减少结果?

最佳答案

map 功能。主要是你的,但发出 meta.id作为一个值。

function(doc, meta) {
for(i=0; i< doc.devices.length; i++) {
for(j=0; j< doc.devices[i].hashes.length; j++) {
emit(doc.devices[i].hashes[j], meta.id)
}
}
}

减少功能。只是从值返回唯一的数组(取自 https://stackoverflow.com/a/13486540/98509 )
function(keys, values, rereduce) {
return values.filter(function (e, i, arr) {
return arr.lastIndexOf(e) === i;
});
}

关于mapreduce - 在 couchbase 中编写 reduce 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177986/

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