2013-03-08 59 views

回答

2

正如上面提到的其他堆棧溢出問題所述,MongoDB實際上並沒有能力重命名數據庫。但是,您可以複製然後刪除,但請注意這會導致重建索引。你不想爲大數據集做這件事。

蒙戈-紅寶石驅動器(以及大多數10gen的驅動程序)具有通過在任何DB對象實例DB#command方法的調用來執行任何MongoDB command的能力。

在Ruby驅動程序,你會做到以下幾點:這不正是上面的Ruby代碼確實在MongoDB中的較新版本存在的db.rename一個JS外殼幫手():

require 'mongo' 
client = Mongo::MongoClient.new 
db = client.db('admin') 

db.command({:copydb => 1, :fromdb => oldname, :todb => newname}) 
client.drop_database(oldname) 

更新。

function (newName) { 
    if(newName == this.getName() || newName.length === 0) 
    return; 

    this.copyDatabase(this.getName(), newName, "localhost"); 
    this.dropDatabase(); 
    db = this.getSiblingDB(newName); 
} 

除此之外,還有以下功能請求票據用於使db.rename()成爲第一類命令。請隨時注意此功能。

https://jira.mongodb.org/browse/SERVER-701