2

我正在尝试在我的 mongo 实例上启用全文搜索,但我要索引的集合非常大。通常,我会打开 mongo 控制台并输入:

db.articles.ensureIndex({"text":"text"})

但是,我已经等了一个小时并且想在一夜之间运行它,所以我正在寻求运行类似nohup命令的能力。

我知道我可以做一些事情,比如:

mongo dbname --eval "db.articles.ensureIndex({'text':'text'})"

但即使将其改写为:

nohup mongo dbname --eval "db.articles.ensureIndex({'text':'text'})" &

这仍然完全阻止了我的 mongo 使用。那是,

$ mongo
> show dbs

另一个作业在后台运行时超时——索引时完全不可用。有什么方法可以更有效地作为后台进程运行它,或者将 index 命令限制为只有这么多线程之类的?

更新 实际上,它比这更糟糕。运行这个 index 命令似乎让我的 mongo 完全被阻塞和蹒跚。非常非常大的索引,我想。

4

1 回答 1

4

您应该使用该background选项。

db.collection.ensureIndex({ text: 'text', background: true })

来自 mongodb 的文档:

在后台构建索引,以便构建索引不会阻塞其他数据库活动。

更多信息在这里http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/

于 2013-07-15T21:40:56.570 回答