0

我正在使用 mongodb,使用 java,我有以下文档结构:

{
     _id : ...
     total_items : 34
     avarage_cost : 54
}

现在我有一个带有成本的项目,我想更新我的收藏,以便总数增加 1 并且平均成本是正确的,最好的方法是什么?

我想过做这样的事情:

int cost = ... ;

BasicDBObject updatequery = new BasicDBObject();
updatequery.put("$inc", BasicDBObjectBuilder.start().add("total_items ", 1).get());    
updatequery.put("$function", "function(){this.avarage_cost = ((this.total_items-1)*this.avarage_cost + "+cost+"/) / this.total_items;}");

这是一个好的/有效的解决方案吗?最好的方法是什么?

4

1 回答 1

1

现在你不能在更新查询上运行 javascript 代码。Jira 上有一个未解决的问题。在这里检查问题。

您可以按如下方式解决此问题:

  1. 获取当前对象。
  2. 如果为空,则计算 average_cost 和 total_items 并插入数据库。
  3. 如果不为空,则获取当前的 total_items & average_cost 字段。
  4. 计算新的 total_items 和 average_cost 值。
  5. $set使用查询参数更新这些字段。
于 2013-05-13T14:44:27.490 回答