mongodb索引创建工作的状态

时间:2014-03-10 19:17:13

标签: mongodb background indexing jobs

我正在使用MongoDB并拥有大约7500万条记录的集合。 我使用以下命令在两个“字段”上添加了复合索引:

db.my_collection.ensureIndex({"data.items.text":1, "created_at":1},{background:true}).

两天后,我试图查看索引创建的状态。运行db.currentOp()会返回{},但是当我尝试创建另一个索引时,会收到以下错误消息:

cannot add index with a background operation in progress.

有没有办法检查索引创建作业的状态/进度?

要添加一件事 - 我使用的是mongodb 2.0.6版。谢谢!

7 个答案:

答案 0 :(得分:19)

在mongo shell中,键入以下命令以显示当前进度:

rs0:PRIMARY> db.currentOp(true).inprog.forEach(function(op){ if(op.msg!==undefined) print(op.msg) })

Index Build (background) Index Build (background): 1431577/55212209 2%

答案 1 :(得分:11)

您可以将 currentOp true 参数一起使用,该参数返回更详细的输出,包括空闲连接和系统操作。

db.currentOp(true)

...然后你可以使用 db.killOp()来杀死所需的操作。

答案 2 :(得分:6)

以下内容应打印索引进度:

.gitignore

输出:

db
  .currentOp({"command.createIndexes": { $exists : true } })
  .inprog
  .forEach(function(op){ print(op.msg) })

答案 3 :(得分:6)

不幸的是,DR9885答案对我不起作用,他在代码中留有空格(语法错误),即使删除了空格,它也不会返回任何内容。

此版本自Mongo Shell v3.6.0

db.currentOp().inprog.forEach(function(op){ if(op.msg) print(op.msg) })

直到我发布我的答案之前,我都没有读过Bajal的答案,但是它几乎完全一样,只是它的代码略短,并且也可以使用。

答案 4 :(得分:3)

我喜欢:

db.currentOp({ 
    'msg' :{ $exists: true },
    'command': { $exists: true },
    $or: [ 
        { 'command.createIndexes': { $exists: true } }, 
        { 'command.reIndex': { $exists: true } }
    ]
}).inprog.forEach(function(op) { 
    print(op.msg); 
});

输出示例:

索引构建索引构建:84826/335739 25%

文档建议:

db.adminCommand(
    {
      currentOp: true,
      $or: [
        { op: "command", "command.createIndexes": { $exists: true }  },
        { op: "none", "msg" : /^Index Build/ }
      ]
    }
)

Active Indexing Operations example

答案 5 :(得分:1)

一个简单的方法,可以检查单个索引的进度:

db.currentOp({"msg":/Index/}).inprog[0].progress;

输出:

{ "done" : 86007212, "total" : 96868386 }

答案 6 :(得分:0)

查找索引作业的进度,不错的一个班轮:

> db.currentOp().inprog.map(a => a.msg)
[
    undefined,
    undefined,
    undefined,
    undefined,
    undefined,
    undefined,
    "Index Build: scanning collection Index Build: scanning collection: 16448156/54469342 30%",
    undefined,
    undefined
]