C#等同于db.repairDatabase()

时间:2012-05-02 16:50:42

标签: c# mongodb

有没有办法从C#驱动程序调用MongoDB的db.repairDatabase()函数?

我能够压缩集合:

database.RunCommand(new CommandDocument("compact","collectionname"));

但我无法调用repairDatabase。

2 个答案:

答案 0 :(得分:1)

database.RunCommand方法已超载。它也可以使用一个字符串作为命令的名称,如下所示:

database.RunCommand("repairDatabase")

它还会返回CommandResult个对象。

答案 1 :(得分:1)

为了回应您的评论,您收到了“错误选项”消息的异常,事实证明服务器对于您是使用1还是true作为repairDatabase字段的值是挑剔的。以下两个是等效的,都失败了,因为服务器不喜欢“true”而不是“1”:

database.RunCommand("repairDatabase");
database.RunCommnad(new CommandDocument("repairDatabase", true));

但这有效:

database.RunCommnad(new CommandDocument("repairDatabase", 1));

如果这涉及到您,可以向服务器报告JIRA:

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