【发布时间】:2012-03-28 22:24:57
【问题描述】:
显而易见的方法是做find,然后迭代游标,一个一个地插入元素。这对我来说似乎效率低下。
另一种方法是在查询结果上定义一个map-reduce,它不会减少任何东西并使用out参数来指定目标集合。这似乎是一个 hack。
有没有更有效、更直接的方法来做到这一点?
【问题讨论】:
显而易见的方法是做find,然后迭代游标,一个一个地插入元素。这对我来说似乎效率低下。
另一种方法是在查询结果上定义一个map-reduce,它不会减少任何东西并使用out参数来指定目标集合。这似乎是一个 hack。
有没有更有效、更直接的方法来做到这一点?
【问题讨论】:
目前您必须使用您描述的解决方法,您所指的功能已被请求但尚未实现:
https://jira.mongodb.org/browse/SERVER-610
https://jira.mongodb.org/browse/SERVER-2920
通过用例对它们进行投票和/或评论,以引起他们的注意。
【讨论】:
如果担心效率,可以用eval()运行查询服务器端
> e_query
function e_query() {
db.collection1.find({...}).forEach(
function(obj){
db.collection2.insert(obj);
}
);
}
> db.eval(e_query)
【讨论】:
use collections 命令显示。