0

我的文档都有 {max, increment, value},我希望用 this.value = max(this.max + this.increment) 遍历所有文档。

目前,我 find() 所有这些,对每个执行 value = Math.min(max, value + increment),然后将它们全部保存回服务器(我在 mongodb 中执行此操作)。

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

如何做到这一点?对于使用索引来进一步优化这一点或解释为什么索引没有帮助的人来说,这是一个巧克力蛋糕。

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

4

1 回答 1

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/

于 2013-05-10T11:40:53.227 回答