在 Couchbase 中加入文档并使用聚合函数
Joining documents in Couchbase and using aggregate functions
我有这4个文件
文档 1
{
"First_Name": "dhw",
"Type": "GLAccount",
"Acc_no": 1,
"Last_Name": "irtahow"
}
文件 2
{
"Marks": 13,
"Type": "GLEntry",
"Acc_no": 1
}
文档 3
{
"Marks": 85,
"Type": "GLEntry",
"Acc_no": 1
}
文件 4
{
"Marks": 93,
"Type": "GLEntry",
"Acc_no": 1
}
现在我想对文档 2,3 和 4 使用求和函数,然后将其与文档 1 相结合。所以我的查询结果应该是这样的
Acc_no First_Name Last_Name Sum(marks)
1 "dhw" "irtahow" 191
所以在这里你看到我想首先对特定 Acc_No 的所有标记求和,然后输出其标记和名字和姓氏的总和。
我能够对标记求和,但无法模拟连接。
编辑 1:
这是我到目前为止所做的
地图函数
function(doc, meta)
{
emit(doc.No,doc.marks);
}
减少函数
_sum
我得到了一个特定帐户的所有标记的总和,但我无法将它与包含名字和姓氏的文档结合起来
我有点犹豫要不要提出这个建议,因为我不确定这对性能的影响可能是什么,但这会在单个查询中为您获取数据。
地图函数:
function (doc) {
var type = doc.Type == "GLAccount" ? 0 : 1;
var marks = doc.Marks ? doc.Marks: 0;
var key = [doc.Acc_no, type];
if (type === 0){
key.push(doc.First_Name, doc.Last_Name);
}
emit(key, marks);
}
归约函数:
_sum
URL 查询:
http://host:5984/db/_design/design/_view/view?group=true
结果:
{"rows":[
{"key":[1,0,"dhw","irtahow"],"value":0},
{"key":[1,1],"value":191}
]}
然后您需要从 JSON.
中提取数据
我有这4个文件
文档 1
{
"First_Name": "dhw",
"Type": "GLAccount",
"Acc_no": 1,
"Last_Name": "irtahow"
}
文件 2
{
"Marks": 13,
"Type": "GLEntry",
"Acc_no": 1
}
文档 3
{
"Marks": 85,
"Type": "GLEntry",
"Acc_no": 1
}
文件 4
{
"Marks": 93,
"Type": "GLEntry",
"Acc_no": 1
}
现在我想对文档 2,3 和 4 使用求和函数,然后将其与文档 1 相结合。所以我的查询结果应该是这样的
Acc_no First_Name Last_Name Sum(marks)
1 "dhw" "irtahow" 191
所以在这里你看到我想首先对特定 Acc_No 的所有标记求和,然后输出其标记和名字和姓氏的总和。 我能够对标记求和,但无法模拟连接。
编辑 1: 这是我到目前为止所做的
地图函数
function(doc, meta)
{
emit(doc.No,doc.marks);
}
减少函数
_sum
我得到了一个特定帐户的所有标记的总和,但我无法将它与包含名字和姓氏的文档结合起来
我有点犹豫要不要提出这个建议,因为我不确定这对性能的影响可能是什么,但这会在单个查询中为您获取数据。
地图函数:
function (doc) {
var type = doc.Type == "GLAccount" ? 0 : 1;
var marks = doc.Marks ? doc.Marks: 0;
var key = [doc.Acc_no, type];
if (type === 0){
key.push(doc.First_Name, doc.Last_Name);
}
emit(key, marks);
}
归约函数:
_sum
URL 查询:
http://host:5984/db/_design/design/_view/view?group=true
结果:
{"rows":[
{"key":[1,0,"dhw","irtahow"],"value":0},
{"key":[1,1],"value":191}
]}
然后您需要从 JSON.
中提取数据