2015-02-02 2 views
2

Я не могу переименовать коллекцию в mongoDB. Я вижу, что он существует и может писать и читать данные из него. Я попытался выполнить следующие действия с помощью родного драйвера узла mongo.переименование коллекции с помощью mongoDB

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); 
}); 
+0

Вы пробовали 'db.mycollection.renameCollection ("mynewcollection");?' [Manual] (http://docs.mongodb.org/manual/reference/method/db.collection.renameCollection/) – chridam

+0

Да, это то же самое, что и первое решение, но я все еще пытался использовать оба синтаксиса – wazzaday

+0

. Мне кажется, вам нужно 'rename' [method] (http://mongodb.github.io/node-mongodb-native/api-generated /collection.html#rename) – chridam

ответ

7

Способ переименовать коллекцию с помощью Node.js драйвер является rename, не renameCollection:

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

oh man! thats раздражает, спасибо Johnny – wazzaday

+1

@wazzaday Для чего это стоит, они назвали это так, потому что синтаксис цепочки точек уже помещает вас в контекст коллекции. На простом английском языке проще читать «collection.rename», но более избыточно читать «collection.renameCollection». Они пытались сделать API более интуитивно понятным. – Chev

0

добавьте этот код в свою коллекцию.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); 
    }); 
    }); 
Смежные вопросы