MongoDB将集合的子集复制到新集合

时间:2016-10-24 10:51:35

标签: mongodb

我有大约25万条记录的集合。创建新集合的最有效方法是什么?它是最后1米的子集?

我有这个;

db.metric.find({}).sort({'createdAt': -1}).limit(1000000).forEach(function(doc){
   db.metricSubset.insert(doc);
});

但查询花了这么长时间才开始运行我觉得它超时了,只节省了大约34k。

可以更快地完成吗?

我正在使用Mongo的2.4.8版本

2 个答案:

答案 0 :(得分:3)

你可以尝试另一种方法是使用$out的聚合管道,它应该更快 -

db.metric.aggregate([
 {$sort: {createdAt: -1}},
 {$limit: 1000000},
 {$out: 'metricSubset'}
])

答案 1 :(得分:1)

你应该尝试升级到版本2.6,以便像这样使用聚合框架和$ out运算符:

db.metric.aggregate([ {$sort: {'createdAt': -1}}, {$limit: 1000000}, { $out: "metricSubset" }]);