我有大约25万条记录的集合。创建新集合的最有效方法是什么?它是最后1米的子集?
我有这个;
db.metric.find({}).sort({'createdAt': -1}).limit(1000000).forEach(function(doc){
db.metricSubset.insert(doc);
});
但查询花了这么长时间才开始运行我觉得它超时了,只节省了大约34k。
可以更快地完成吗?
我正在使用Mongo的2.4.8版本
答案 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" }]);