How can I rename a collection in MongoDB?
Asked Answered
R

6

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?

Roswell answered 4/1, 2012 at 19:11 Comment(0)
B
121

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

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

Benjaminbenji answered 4/1, 2012 at 19:19 Comment(4)
hint: try using tab complete to find things you think might be there ;)Benjaminbenji
+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)Bates
after the rename, will the indexes and everything be kept?Ryun
How can I make the old one variable, such as db[old].rename..?Leigh
L
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")

Limner answered 9/9, 2014 at 12:9 Comment(2)
db.getCollection("oldCollectionILLEGALName").renameCollection("someBetterName") should also work. I had renamed my collection to _old_collection_name and this saved me.Maxine
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.Teutonize
P
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.

Playboy answered 21/12, 2015 at 4:30 Comment(1)
Answer from 2015 still valid as of today, plus one.Leigh
I
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");
Identity answered 27/5, 2020 at 14:24 Comment(1)
Always remember, mongo is not js is not nodejs. So look at the difference, therefore plus one.Leigh
T
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

Twilatwilight answered 8/2, 2021 at 8:42 Comment(0)
L
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!

Lazy answered 7/2, 2019 at 7:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.