对集合中的所有文档执行此查询:this.value = Math.min(this.max,this.value + this.increment)在mongodb中

时间:2013-05-10 11:27:28

标签: node.js mongodb

我的文件都有{max,increment,value},我希望用this.value = max(this.max + this.increment)迭代所有文件。

目前,我发现()所有这些,在每一个上执行value = Math.min(max,value + increment),然后将所有这些保存回服务器(我在mongodb中执行此操作)。

正如你所看到的,这是一种可怕的方式。我想对所有文档执行此指令,仅限服务器端。

怎么会这样做?对于使用索引进一步优化这一点或者解释为什么索引无济于事的人来说,布朗尼。

我正在将NodeJS用于服务器和本机mongodb库。

1 个答案:

答案 0 :(得分:1)

你可以像这样创建一个地图函数:

db.yourcollection.mapReduce(mapFunctions...)

http://docs.mongodb.org/manual/core/map-reduce/

“Map-reduce操作可以处理复杂的聚合任务。为了执行map-reduce操作,MongoDB提供了mapReduce命令,在mongo shell中提供了db.collection.mapReduce()包装方法。”

http://docs.mongodb.org/manual/tutorial/map-reduce-examples/