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

juh*_*uhi 1 mongodb

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

db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1});
........
Run Code Online (Sandbox Code Playgroud)

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

朱希.

Ser*_*sev 12

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

mongo --host my_host --port my_port my_db create_indexes.js
Run Code Online (Sandbox Code Playgroud)

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

db.getCollection("elements").ensureIndex({customerId:1});
db.getCollection("elements").ensureIndex({userId:1});
....
Run Code Online (Sandbox Code Playgroud)


dla*_*law 8

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

var ensureIndexes = function() {
    db.getCollection("elements").ensureIndex({customerId:1});
    db.getCollection("elements").ensureIndex({userId:1}); ........
}
Run Code Online (Sandbox Code Playgroud)

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

load('ensureIndexes.js')
Run Code Online (Sandbox Code Playgroud)

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