73

Is there a dead easy way to rename a collection in mongo? Something like:

db.originalCollectionName.rename('newCollectionName');

And if not, what is the best way to go about effectively renaming one?

0

6 Answers 6

121

Close. Use db.originalCollectionName.renameCollection('newCollectionName')

See http://www.mongodb.org/display/DOCS/renameCollection+Command

4
  • 4
    hint: try using tab complete to find things you think might be there ;)
    – nav
    Commented Jan 4, 2012 at 20:02
  • 1
    +1 I also found that this will error if the collection that you wish to rename to (the 'target collection name') already exists. IF you are happy for said collection to be dropped; then you can pass 'true' as the second argument, e.g. db.originalCollName.renameCollection('alreadyExistingCollName', true)
    – AlexP
    Commented Feb 24, 2015 at 23:15
  • after the rename, will the indexes and everything be kept? Commented Dec 3, 2016 at 0:30
  • How can I make the old one variable, such as db[old].rename..?
    – Timo
    Commented Jun 7, 2022 at 10:40
19

For those who cannot rename, because the name causes an issue like: SyntaxError: Unexpected token ILLEGAL, it is because the name is illegal.

You can work around this by calling with brackets notation: db["oldCollectionILLEGALName"].renameCollection("someBetterName")

2
  • db.getCollection("oldCollectionILLEGALName").renameCollection("someBetterName") should also work. I had renamed my collection to _old_collection_name and this saved me.
    – Liswin
    Commented May 18, 2021 at 14:52
  • Thanks buddy, this solved my issue. I am currently learning Mongo and in a rush I ended up naming my collection as 'employee-detail' and was stuck with the error. This was a good learning.
    – Azan Momin
    Commented May 27, 2021 at 13:16
18

Assume that the database name is "mytestdb" and collection name is "orders". collection name change to orders2015 The simplest way is,

> use mytestdb
> db.orders.renameCollection( "orders2015" )

Note : db.collection.renameCollection() is not supported on sharded collections.

1
  • Answer from 2015 still valid as of today, plus one.
    – Timo
    Commented May 10, 2022 at 9:40
7

In case you are using Node.js MongoDB driver:

mongoClient.db(dbName).collection('oldName').rename("newName");

https://mongodb.github.io/node-mongodb-native/3.5/api/Collection.html#rename

my case was using mongoose:

await mongoose.connection.collection("oldName").rename("newName");
1
  • Always remember, mongo is not js is not nodejs. So look at the difference, therefore plus one.
    – Timo
    Commented Jun 7, 2022 at 10:54
2

Rename a collection in cmd:

cd C:\Program Files\MongoDB\Server\4.2\bin
mongo
use yourdb
db.yourcollection.renameCollection("someBetterName")

This example is made for MongoDB 4.2

0

You can use the following syntax to rename an existing collection in MongoDB.

db.originalCollectionName.renameCollection('newCollectionName')

For instance, if your existing collection name is 'demo' and want to rename to 'demo_updated' then, the query would be as follows:-

db.demo.renameCollection('demo_updated')

Thanks!

Not the answer you're looking for? Browse other questions tagged or ask your own question.