Mongo Shell无法在正在运行的数据库上创建索引

时间:2019-03-13 14:39:48

标签: mongodb

我们使用mongo-index-exporter转储了索引的定义,并尝试在每次应用程序启动时应用它们,以便通过执行来实现可重现的环境

mongo --verbose "mongodb://$MONGO_DB_USER:$MONGO_DB_PASSWORD@$MONGO_DB_HOST/$MONGO_DB_NAME?authSource=$MONGO_AUTH_SOURCE&authMode=scram-sha1" indexes.js

在这样的文件上:

print('Using db ' + db)
setVerboseShell(true)
print('Creating indexes on mycoll1')
db.mycoll1.createIndex({"_id":1}, {"name":"_id_", "background": true});
db.mycoll1.createIndex({"createdAt":1,"field1.field2.field3":1}, {"name":"coll1_field123_idx"});
print('Creating indexes on mycoll2')
db.mycoll2.createIndex({"_id":1}, {"name":"_id_", "background": true});
db.mycoll2.createIndex({"createdAt":1,"field1.field2.field3":1}, {"name":"coll1_field123_idx"});

要在具有五个节点的copyset上创建索引,我们正在执行 以下命令:

mongo --verbose "mongodb://$MONGO_DB_USER:$MONGO_DB_PASSWORD@$MONGO_DB_HOST/$MONGO_DB_NAME?authSource=$MONGO_AUTH_SOURCE&authMode=scram-sha1" indexes.js

这对我们在QA中工作正常,因为MONGO_DB_HOST是一个单节点,并且我们使用的是新的空数据库,而在生产环境中无法使用,因为另外数据库已经存在(并且集合包含内容)。

其他相关信息:

  1. 后台模式没有任何作用
  2. 详细模式不起作用,即,尽管我们使用-v启动mongo客户端,并且执行了setVerbose(true),但控制台上未记录任何内容
  3. 我们的mongo shell是3.6.11,我们的mongo服务器是3.2.9
  4. 复制粘贴到服务器工作的mongo shell内的命令会立即终止,并导致以下输出

    {     “ createdCollectionAutomatically”:否,     “ numIndexesBefore”:11     “ numIndexesAfter”:11     “ note”:“所有索引已经存在”,     “好”:1 }

0 个答案:

没有答案
相关问题