Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于维护索引的MongoDB javascript_Javascript_Mongodb - Fatal编程技术网

用于维护索引的MongoDB javascript

用于维护索引的MongoDB javascript,javascript,mongodb,Javascript,Mongodb,我需要知道如何编写一个Javascript*.js脚本,该脚本可以通过mongo在linux命令行上运行,如果某个DB/collection被删除,它将在给定的DB/collection中重新创建索引。我们有一个问题,即每当我们重新创建或恢复Mongo DB时,新DB的集合都没有以前配置的索引,我们需要一个脚本来重新创建它们。我一直在为每个所需的索引手动键入其中一个命令,但我需要一种方法,通过一个脚本来执行此操作,该脚本可以在需要重新创建索引时在命令行上运行 >> use MyDB

我需要知道如何编写一个Javascript*.js脚本,该脚本可以通过mongo在linux命令行上运行,如果某个DB/collection被删除,它将在给定的DB/collection中重新创建索引。我们有一个问题,即每当我们重新创建或恢复Mongo DB时,新DB的集合都没有以前配置的索引,我们需要一个脚本来重新创建它们。我一直在为每个所需的索引手动键入其中一个命令,但我需要一种方法,通过一个脚本来执行此操作,该脚本可以在需要重新创建索引时在命令行上运行

>> 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
命令继续