可以通过编程方式在副本集中创建MongoDB集合的索引吗?

时间:2014-01-31 19:22:40

标签: c# .net mongodb mongodb-.net-driver

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

2 个答案:

答案 0 :(得分:2)

正如您在docs中所看到的,初选和辅助都有4个可能的阶段:

  • 在主要背景中构建索引。
  • 建立索引
  • 停止一个中学
  • 重新启动程序mongod

您可以使用驱动程序执行前两个操作,因为mongod已启动。使用EnsureIndex和正确的参数。

对于接下来的两个,您无法使用驱动程序,但仍可以像在命令提示符中那样以编程方式执行:

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

答案 1 :(得分:0)

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

  1. 从副本集中取下辅助节点并添加索引。构建索引后,您可以将其重新启动并让它赶上主要
  2. 取下主要内容并重复与1相同的过程。
  3. 您可以决定旧主服务器是否需要再次成为主服务器,或者您可以将其他服务器作为主服务器。
  4. 不要在主服务器的后台构建索引,因为它将构建在辅助服务器的前台(这可能会取消辅助服务器)。在2.6。

    中正在更改此行为