0

给定大量(数百万+)文档集合,类似于:

{ _id : ObjectId, "a" : 3, "b" : 5 }

直接在服务器上处理这些文档并将结果添加到同一集合中的每个文档的最有效方法是什么?例如,添加一个c值等于的键a+b

{ _id : ObjectId, "a" : 3, "b" : 5, "c" : 8 }

我更喜欢在外壳中执行此操作。

似乎这find().forEach()会浪费时间在 db 和 shell 之间传输,并且mapReduce()似乎打算将对象组处理成聚合数据(尽管我可能会误解)。

编辑:我更喜欢不阻塞的解决方案,如果有一个(除了在客户端上使用光标)......

4

2 回答 2

2

来自db.eval() 上的 MongoDB 文档

“db.eval() 用于评估数据库服务器上的函数(用 JavaScript 编写)。如果您需要轻而易举地接触大量数据,这很有用。在这种情况下,数据的网络传输可能会成为瓶颈。 "

该文档有一个如何使用它的示例,该示例与您尝试执行的操作非常相似。

于 2012-09-11T20:53:54.953 回答
1

forEach是您的最佳选择。我会在服务器上(从外壳)运行它以减少延迟。

于 2012-09-11T19:16:16.440 回答