给定一个大型(millions+)文档集合,类似于:
{ _id : ObjectId, "a" : 3, "b" : 5 }
在服务器上直接处理这些文档的最有效方法是将结果添加到同一集合中的每个文档中?例如,添加一个键c
,其值等于a+b
。
{ _id : ObjectId, "a" : 3, "b" : 5, "c" : 8 }
我宁愿在壳里做这个。
似乎find().forEach()
会浪费时间在db和shell之间传输,而mapReduce()
似乎打算将一组对象处理成聚合数据(尽管我可能误解了)。
编辑:我更喜欢一个不阻塞的解决方案,如果有一个(除了在客户机上使用游标之外).
发布于 2012-09-11 12:53:54
"db.eval()用于评估数据库服务器上的函数(用JavaScript编写)。如果需要轻松地处理大量数据,这很有用。在这种情况下,数据的网络传输可能是一个瓶颈。“
文档中有一个如何使用它的示例,非常类似于您想要做的事情。
发布于 2012-09-11 11:16:16
forEach
是你最好的选择。我会在服务器(从shell)上运行它,以减少延迟。
https://stackoverflow.com/questions/12375458
复制