使用mongoDB重命名集合

时间:2015-02-02 15:15:35

标签: node.js mongodb

我无法在mongoDB中重命名集合。我可以看到它存在并可以从中写入和读取数据。我使用节点mongo本机驱动程序尝试了以下操作。

db.collection("mycollection").renameCollection("mynewcollection");

error: TypeError: Object #<Collection> has no method 'renameCollection'

db['mycollection'].renameCollection("mynewcollection");

Cannot call method 'renameCollection' of undefined

在同一位置执行以下操作会按预期返回所有文档

db.collection("mycollection").find({}).toArray(function(err, docs){
    console.log(docs);
});

2 个答案:

答案 0 :(得分:10)

使用node.js驱动程序重命名集合的方法是rename,而不是renameCollection

db.collection("mycollection").rename("mynewcollection", function(err, newColl) {...});

答案 1 :(得分:0)

将此代码添加到collection.js(它应该添加到第153行,或者是collection.js代码的结尾),它应该解决问题。

req.collection.rename(name, function(err, collection) {
     if (err) {
-      req.session.error('Something went wrong: ' + err);
+      req.session.error = 'Something went wrong: ' + err;
       console.error(err);
       return res.redirect('back');
     }

     req.updateCollections(req.db, req.dbName, function(err) {
       if (err) {
-        req.session.error('Something went wrong: ' + err);
+        req.session.error = 'Something went wrong: ' + err;
         return res.redirect('back');
       }

-      req.session.success('Collection renamed!');
+      req.session.success = 'Collection renamed!';
       res.redirect(config.site.baseUrl+'db/' + req.dbName + '/' + name);
     });
   });