有没有更好的方法将mongodb查询导出到新集合?

Bob*_*son 9 mapreduce mongodb

我想要的是:我有一个主要的产品集合,然后我想过滤它们并将它们放在一个单独的集合中.

db.masterproducts.find({category:"scuba gear"}).copyTo(db.newcollection)

当然,我意识到'copyTo'不存在.

我认为我可以使用MapReduce来完成它,因为使用v1.8中新的'out'参数在新集合中创建结果; 但是这个新系列不是我原始系列的一个子集.或者是否可以正确使用MapReduce?

为了解决这个问题,我目前正在这样做:第1步:/ usr/local/mongodb/bin/mongodump --db database --collection masterproducts -q'{category:"scuba gear"}'

第2步:/ usr/local/mongodb/bin/mongorestore -d database -c newcollection --drop packages.bson

我的两步法似乎效率很低!

任何帮助非常感谢.

谢谢

短发

ren*_*een 12

您可以遍历查询结果并保存每个项目,如下所示:

db.oldCollection.find(query).forEach(function(x){db.newCollection.save(x);})
Run Code Online (Sandbox Code Playgroud)


And*_*ich 4

  1. 您可以创建小型服务器端 javascript(就像这个,只需添加您想要的过滤)并使用eval执行它
  2. 您可以按照上述方式使用转储/恢复
  3. 复制收集命令应该很快就会出现在 mongodb 中(将按投票顺序完成)!请参阅jira 功能。