用于维护索引的MongoDB javascript
我需要知道如何编写一个Javascript*.js脚本,该脚本可以通过mongo在linux命令行上运行,如果某个DB/collection被删除,它将在给定的DB/collection中重新创建索引。我们有一个问题,即每当我们重新创建或恢复Mongo DB时,新DB的集合都没有以前配置的索引,我们需要一个脚本来重新创建它们。我一直在为每个所需的索引手动键入其中一个命令,但我需要一种方法,通过一个脚本来执行此操作,该脚本可以在需要重新创建索引时在命令行上运行用于维护索引的MongoDB javascript,javascript,mongodb,Javascript,Mongodb,我需要知道如何编写一个Javascript*.js脚本,该脚本可以通过mongo在linux命令行上运行,如果某个DB/collection被删除,它将在给定的DB/collection中重新创建索引。我们有一个问题,即每当我们重新创建或恢复Mongo DB时,新DB的集合都没有以前配置的索引,我们需要一个脚本来重新创建它们。我一直在为每个所需的索引手动键入其中一个命令,但我需要一种方法,通过一个脚本来执行此操作,该脚本可以在需要重新创建索引时在命令行上运行 >> use MyDB
>> use MyDB
>> db.MyCollection1.ensureIndex({
"Thing1" : 1,
"Thing2" : -1
})
>> db.MyCollection2.ensureIndex({
"Thing3" : 1,
"Thing4" : -1
})
如何将其转换为可以一次运行的.js脚本?创建一个.js文件,并使用变量
mydb
获取db.getSisterDB(“mydb”)
。然后,您将能够使用MyDB.MyCollection1.ensureIndex
为MyDB中的集合创建索引。通过以下命令在Mongoshell中运行.js文件:mongolocalhost:27017 filename.js
var mydb = db.getSisterDB("MyDB");
mydb.MyCollection1.ensureIndex({
"Thing1" : 1,
"Thing2" : -1
});
mydb.MyCollection2.ensureIndex({
"Thing3" : 1,
"Thing4" : -1
});
只需使用mongo外壳。它可以用于批处理执行。我需要是非交互式的。我刚才说的“mongo localhost:27017/MyDB createindex.js”就是一个可以用一个命令运行的东西——你试过了吗?你可以使用mongo shell运行一些javascript来实现这一点——但我更想了解这是如何发生的。如何转储/恢复数据库?应使用所有执行备份/恢复的标准方法自动重新创建索引。您使用的是哪个版本的MongoDB?MongoDB-org-2.6.5-1.x86_64是我在CentOS 6.5上使用的RPM。正如db.MyCollection.getIndexes()所确认的那样,使用mongodump/mongorestore似乎让我们在恢复后没有索引。我的问题是如何格式化.js,使多个db.MyCollection.ensureIndex()语句可以用一个mongo命令一个一个地运行。出于某种原因,此方法只创建第一个索引
Thing1\u 1\u Thing2\u-1
而不创建第二个索引,不管前面的注释如何。需要终端保持运行,以便下一个createIndex
命令继续