我正在尝试使用c#driver使用copydb命令复制mongo数据库。 但它只是创建了没有集合的目标数据库。 当我直接使用mongo shell运行命令时,它可以正常工作。
这是c#代码:
var db = mongo.GetServer().GetDatabase("admin");
var command = new CommandDocument(new BsonElement("copydb", 1),
new BsonElement("fromdb", "db1"),
new BsonElement("todb", "db2")
);
var result = db.RunCommand(command);
它不会复制db1的集合。
这是我遇到mongo shell的命令并正常工作:
db.runCommand({copydb:1, fromdb:"db1", todb:"db2"})
我缺少什么?
答案 0 :(得分:0)
请尝试以下操作:
var result = db.RunCommand(
new CommandDocument(new BsonElement("copydb", 1),
new BsonElement("fromhost", "localhost"),
new BsonElement("fromdb", "sourcedb"),
new BsonElement("todb", "targetdb")));
答案 1 :(得分:0)
下一个代码有效。它的C#MongoDB.Driver 2.0
var database = mongoClient.GetDatabase("admin");
var command = @"{ copydb: 1, fromhost: 'localhost', fromdb: 'from', todb: 'toDbName'}";
await database.RunCommandAsync<BsonDocument>(BsonDocument.Parse(command));