2014-12-19 53 views
0

我需要知道如何编写一个Javascript * .js脚本,它可以通过mongo在Linux命令行上运行,如果该DB /集合曾经在给定的DB /集合中重新创建索引碰巧会掉线。我们有一个问题,无论何时我们重新创建或恢复一个Mongo DB,新的数据库的集合都没有以前配置的索引,我们需要一个脚本来重新创建它们。我已经为每个需要的索引手动输入了这些命令中的一个,但是我需要一种方法来通过一个可以在命令行上运行的脚本来完成,只要我们需要重新创建索引。用于维护索引的MongoDB javascript

>> use MyDB 
>> db.MyCollection1.ensureIndex({ 
         "Thing1" : 1, 
         "Thing2" : -1 
       }) 
>> db.MyCollection2.ensureIndex({ 
         "Thing3" : 1, 
         "Thing4" : -1 
       }) 

这怎么可能被转换成一个可以同时运行的.js脚本?

+0

只使用mongo shell。它可以用于批处理执行。 –

+0

我需要非互动。可以使用单个命令运行的东西,比如“mongo localhost:27017/MyDB createindex.js” – perdurabo93

+0

这正是我所说的 - 你甚至试过了吗? –

回答

0

创建一个.js文件并使用变量mydb得到db.getSisterDB("MyDB")。然后,您将能够使用mydb.MyCollection1.ensureIndex为MyDB中的集合创建索引。通过命令在mongo shell中运行.js文件:mongo localhost:27017 filename.js

var mydb = db.getSisterDB("MyDB"); 
mydb.MyCollection1.ensureIndex({ 
         "Thing1" : 1, 
         "Thing2" : -1 
       }); 
mydb.MyCollection2.ensureIndex({ 
         "Thing3" : 1, 
         "Thing4" : -1 
       });