首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB:修改服务器上的每个文档

MongoDB:修改服务器上的每个文档
EN

Stack Overflow用户
提问于 2012-09-11 18:09:22
回答 2查看 180关注 0票数 0

给定一个大型(millions+)文档集合,类似于:

代码语言:javascript
运行
复制
{ _id : ObjectId, "a" : 3, "b" : 5 }

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

代码语言:javascript
运行
复制
{ _id : ObjectId, "a" : 3, "b" : 5, "c" : 8 }

我宁愿在壳里做这个。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-11 20:53:54

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

"db.eval()用于评估数据库服务器上的函数(用JavaScript编写)。如果需要轻松地处理大量数据,这很有用。在这种情况下,数据的网络传输可能是一个瓶颈。“

文档中有一个如何使用它的示例,非常类似于您想要做的事情。

票数 2
EN

Stack Overflow用户

发布于 2012-09-11 19:16:16

forEach是你最好的选择。我会在服务器(从shell)上运行它,以减少延迟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12375458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档