我正在尝试在我的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命令限制为只有这么多线程或什么?
更新 实际上,它比那更糟糕。运行这个索引命令似乎让我的mongo被阻止并完全陷入困境。非常非常大的指数,我认为。
答案 0 :(得分:4)
您应该使用background
选项。
db.collection.ensureIndex({ text: 'text', background: true })
来自mongodb的文档:
在后台构建索引,以便不构建索引 阻止其他数据库活动。
此处提供更多信息http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/