收藏
回答

云函数操作数据库,怎样在获取某条数据之后再修改此条数据然后返回结果?

假设集合version有如下数据

{
  _id: 1,
  option: [
      {
      	id: 1,
      	total: 10
      }, {
      	id: 2,
      	total: 20
      }
   ]
}


我想获取version集合中_id等于1的数据,同时将此条数据的option数组中的每条记录新增一个字段num,

num的值为 option[i] 的total 除以 option所有total之和 。

我现在写了一半报错了,请问该怎么实现?

db.collection('version').aggregate().match({
        _id: 1
    }).addFields({
        totalScore: $.sum('$option.total'),
    }).addFields({
        'option.num': $.divide(['$option.total''$totalScore']) //这里报错了
    })
    .end()


难道只能用for循环实现了吗...

最后一次编辑于  2020-06-16
回答关注问题邀请回答
收藏

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-06-16
    db.collection('version').aggregate()
    .match({
        _id:1
    })
    .addFields({
        totalScore: $.sum('$option.total')
    }).unwind('$option').addFields({
        'option.num': $.divide(['$option.total''$totalScore'])
    }).group({
        _id: '$_id',
        option: $.push('$option')
    }).end()
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-06-16
    有用 1
    回复 2
    • notfound
      notfound
      2020-06-16
      再请教个问题,算数操作符里面是不是没有四舍五入的方法啊
      2020-06-16
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-06-16回复notfound
      貌似没有,只有向下取整
      2020-06-16
      回复
登录 后发表内容
问题标签