Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以通过编程方式在副本集中的MongoDB集合上创建索引?_C#_.net_Mongodb_Mongodb .net Driver - Fatal编程技术网

C# 是否可以通过编程方式在副本集中的MongoDB集合上创建索引?

C# 是否可以通过编程方式在副本集中的MongoDB集合上创建索引?,c#,.net,mongodb,mongodb-.net-driver,C#,.net,Mongodb,Mongodb .net Driver,我已经看到了在MongoDB中创建副本集索引的说明。它看起来相当复杂,需要mongo shell。是否有更简单的方法和/或可以使用C#MongoDB驱动程序实现这一点?正如您在中所看到的,初级和次级有4个可能的阶段: 在主服务器的后台构建索引 建立索引 停止一个二级 重新启动程序mongod 使用驱动程序可以执行前两项操作,因为mongod已启动。使用正确的参数 对于接下来的两种情况,您不能使用驱动程序,但仍然可以像在命令提示符中那样以编程方式使用: var stop = Process.S

我已经看到了在MongoDB中创建副本集索引的说明。它看起来相当复杂,需要mongo shell。是否有更简单的方法和/或可以使用C#MongoDB驱动程序实现这一点?

正如您在中所看到的,初级和次级有4个可能的阶段:

  • 在主服务器的后台构建索引
  • 建立索引
  • 停止一个二级
  • 重新启动程序mongod
使用驱动程序可以执行前两项操作,因为
mongod
已启动。使用正确的参数

对于接下来的两种情况,您不能使用驱动程序,但仍然可以像在命令提示符中那样以编程方式使用:

var stop = Process.Start("mongod", "--shutdown");
var standalone =  Process.Start("mongod", "--port 47017");
var replicated = Process.Start("mongod", "--port 27017 --replSet rs0");

我建议此过程在副本集上构建索引。称之为“滚动索引构建”。例如,假设您有2+1副本集

  • 从副本集中取出次副本并添加索引。一旦建立了索引,您就可以将其恢复到主索引
  • 取下主电源并重复与1相同的过程
  • 您可以决定旧的主服务器是否需要重新成为主服务器,或者您可以选择另一台服务器作为主服务器

  • 不要在主系统中的后台构建索引,因为它将在辅助系统中的前台构建(这可能会破坏辅助系统)。此行为在2.6中发生了更改。

    您自己是否尽了最大努力?ie:在google中键入“mongodb c#driver ensureIndex”?嗯,是的,因此可以链接到在mongodb中使用副本集创建索引的文档。我知道如何使用直接升级的mongodb,但复制集的说明似乎要复杂得多。还有否决票?认真地Stackoverflow已经成为了混蛋们的游乐场。你到底想要什么还不清楚。在复制副本上构建索引与在独立副本上构建索引没有区别,除非您希望在长时间操作期间保持复制副本集的可操作性。不过你没有提到这一点,复杂性是你的问题。无建筑索引不需要mongo shell。您链接的教程说“使用mongo shell中的ensureIndex()或驱动程序中的类似方法创建新索引”。它还描述了需要重新启动mongod并更改其配置的步骤,如果您的服务器已关闭,您希望如何通过驱动程序执行此操作?因此,您基本上回答了我的问题,如果您做出正确的回答,我将对此进行标记。这比你第一次的评论更有帮助。所以不需要这么有争议。这是关于你现在所做的帮助。谢谢