2013-07-10 16 views
2

我有多個用於開發,暫存和生產的MongoDB服務器,並且我想從Dev-> Staging和Staging-> Live中自動執行一些部署過程。手動複製集合意味着使用相當神奇的MongoVUE工具(http://www.mongovue.com/),但顯然這不是自動化的理想解決方案!使用C#驅動程序它們是複製和複製MongoDB集合的更好方法嗎?

因此,從C#驅動程序中,有沒有辦法在同一臺服務器上覆制集合?有沒有辦法將整個集合(索引完好)複製到不同的服務器上?

我試過循環收集,從服務器A檢索文件,然後將它們插入服務器B.這種方法感覺笨拙,冗長且容易出錯。有沒有更好的辦法?

謝謝!

+1

你爲什麼不使用mongodump和mongorestore? –

+0

好的,但我怎麼會從C#驅動程序中做到這一點?我想我可能會錯過一些明顯的東西。抱歉! –

回答

6

您可以使用「COPYDB」數據庫命令,在描述:http://docs.mongodb.org/manual/reference/command/copydb/#dbcmd.copydb

在C#中,你可以運行在目標服務器上執行以下操作:

var command = new CommandDocument(new BsonElement("copydb", 1), 
            new BsonElement("fromhost", mydbserver), 
            new BsonElement("fromdb", sourcedb), 
            new BsonElement("todb", targetdb)); 
var client = new MongoClient(mydbserver); 
var server = client.GetServer(); 
var db = server.GetDatabase("admin"); 
db.RunCommand(command); 
+0

那就是我錯過了db.RunCommand。謝謝Derick! –

相關問題