在cloudant中搜索父ID

时间:2016-05-26 22:19:50

标签: couchdb reduce cloudant

我有一个Cloudant DB,结构如下:

combine()

我需要一个查询来返回金额总和,因此我使用 emit(doc.manager,doc.amount)构建了一个返回

的查询
person

它的工作就像一个魅力。但是,我需要经理ID和经理名称。我要找的结果是:

{id: 1, resource:”john doe”, manager: “john smith”, amount: 13}
{id: 2, resource:”mary doe”, manager: “john smith”, amount: 3}
{id: 3, resource:”john smith”, manager: “peter doe”, amount: 10}

我应该如何构建地图视图来搜索父ID?

谢谢, 埃里克

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为没有办法在一个查询中完全按照您的意愿行事。假设您的数据库中有以下三个文档:

{
  "_id": "2",
  "resource": "mary doe",
  "manager": "john smith",
  "amount": 3
}

-

{
  "_id": "3",
  "resource": "john smith",
  "manager": "peter doe",
  "amount": 10
}

-

_sum

最接近你想要的是下面的map函数(使用复合键)和function(doc) { emit([doc.manager, doc._id], doc.amount); } reduce:

reduce=false

使用{"total_rows":3,"offset":0,"rows":[ {"id":"1","key":["john smith","1"],"value":13}, {"id":"2","key":["john smith","2"],"value":3}, {"id":"3","key":["peter doe","3"],"value":10} ]}

可以获得以下结果
reduce=true

使用group_level=1{"rows":[ {"key":["john smith"],"value":16}, {"key":["peter doe"],"value":10} ]} ,您基本上可以获得与现有结果相同的结果:

reduce=true

如果您改为group=true{"rows":[ {"key":["john smith","1"],"value":13}, {"key":["john smith","2"],"value":3}, {"key":["peter doe","3"],"value":10} ]} (确切分组),那么您会得到以下结果:

manager

_idpublic class AnimationWithAction extends Actor { Animation animation = new Animation(5, textures); } AnimationWithAction anim = new AnimationWithAction(); anim.addAction(youraction); 字段的每个唯一组合进行求和,但遗憾的是,它并没有为您提供所需的内容。要完成你想要完成的任务,我认为你最好,但是在查询数据库之后总结一下这些值。