从mongodb shell运行具有mongodb查询的脚本

时间:2012-01-05 13:32:53

标签: mongodb

我的mongodb数据库文档中有几个ID。我需要通过脚本在这些ID上创建索引,这样我就不必一次又一次地运行ensureIndex命令。

db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1});
........

我只是运行脚本(包含所有这些命令),我应该完成。知道如何从mongodb shell运行脚本吗?该脚本的扩展应该是什么?

朱希。

3 个答案:

答案 0 :(得分:12)

您可以将命令放到javascript文件(扩展名为.js)并使用mongo控制台实用程序来运行它。像这样:

mongo --host my_host --port my_port my_db create_indexes.js

create_indexes.js文件将包含您的命令:

db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1});
....

答案 1 :(得分:8)

您也可以从mongodb shell运行脚本。我喜欢在函数中添加东西以便于调用它们。像这样创建脚本:

var ensureIndexes = function() {
    db.getCollection("elements").ensureIndex({customerId:1});
    db.getCollection("elements").ensureIndex({userId:1}); ........
}

将上面的内容保存到名为ensureIndexes.js的文件中,然后从mongo shell输入:

load('ensureIndexes.js')

现在您可以输入ensureIndexes()来调用该功能。我有很多包含这样的实用程序功能的脚本。

答案 2 :(得分:4)

如果您使用任何类似操作系统的unix,它可能会有所帮助。

我使用unix shell进行了重定向。

因此,从UNIX命令行输入:

mongo < your_script.js

在your_script.js中,您可以声明命令。