MongoDB java通过带有字段的函数更新文档

时间:2013-05-12 21:54:03

标签: java mongodb

我正在使用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;}");

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

1 个答案:

答案 0 :(得分:1)

目前,您无法在更新查询上运行javascript代码。 Jira有一个未解决的问题。检查问题here

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

  1. 获取当前对象。
  2. 如果是null,则计算average_cost& total_items并插入DB。
  3. 如果它不为空,请获取当前的total_items& average_cost field。
  4. 计算新的total_items& average_cost values。
  5. 使用$set查询参数更新这些字段。