运行包含来自mongodb shell的mongodb查询的脚本
我的mongodb数据库文档中有几个ID。我需要通过脚本在这些ID上创建索引,这样就不必反复运行ensureIndex命令运行包含来自mongodb shell的mongodb查询的脚本,mongodb,Mongodb,我的mongodb数据库文档中有几个ID。我需要通过脚本在这些ID上创建索引,这样就不必反复运行ensureIndex命令 db.getCollection("elements").ensureIndex({customerId:1}); db.getCollection("elements").ensureIndex({userId:1}); ........ 我只是运行脚本(包含所有这些命令),应该完成了。知道如何从mongodb shell运行脚本吗?脚本的扩展应该是什么 朱希 您可以将
db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1});
........
我只是运行脚本(包含所有这些命令),应该完成了。知道如何从mongodb shell运行脚本吗?脚本的扩展应该是什么
朱希 您可以将命令放入javascript文件(扩展名为
.js
并使用mongo
控制台实用程序运行它。像这样:
mongo --host my_host --port my_port my_db create_indexes.js
其中create_index.js
文件将包含您的命令:
db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1});
....
您还可以从mongodb shell运行脚本。我喜欢向函数中添加一些东西,以方便调用它们。创建如下脚本:
var ensureIndexes = function() {
db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1}); ........
}
将上述内容保存到名为ensureIndex.js的文件中,然后从mongo shell输入:
load('ensureIndexes.js')
现在,您可以输入
ensureIndex()
来调用该函数。我有很多脚本包含这样的实用程序函数。如果您使用的是任何类似unix的操作系统,它可能会有所帮助
我使用unixshell进行了重定向
因此,您可以在UNIX命令行中键入:
mongo < your_script.js
mongo
在your_script.js中,您可以陈述您的命令。您想再次运行它,还是什么?顺便说一句,您应该接受有用的答案。是的,也可以在这里查看一些提示:对我来说很好:)顺便提一下它在碎片化的环境中能正常工作吗?我的意思是,如果我在mongos shell上运行它,它会反映在我正在运行的碎片上吗?或者我必须在我的碎片上单独运行.js?如果对
mongos
,它将在所有碎片上执行。这是一个很好的技巧,它将确保我们的自定义函数,而不是mongodb shell提供的js函数:)顺便提一下它在碎片化的环境中能正常工作吗?我的意思是,如果我在mongos shell上运行它,它会反映在我正在运行的碎片上,还是我必须在我的碎片上单独运行.js?@juhi是的,你可以这样做。请参阅本页:特别是关于在服务器端存储脚本的部分。然后你可以在任何地方运行它们。