Windows 为什么将粘贴复制到MongoDB shell中可以工作,但从*.js文件don';T

Windows 为什么将粘贴复制到MongoDB shell中可以工作,但从*.js文件don';T,windows,mongodb,cmd,Windows,Mongodb,Cmd,我得到了一个要粘贴到mongodb shell中的命令列表。通常我以管理员的身份打开cmd,将目录更改为MongoDB bin文件夹,启动mongo.exe并简单地进行复制粘贴。我的问题是如何编写一个正确的文件来打开MongoShell并直接发送命令列表?尝试将代码示例保存为test.js,但“mongo.exe test.js”始终返回语法错误:意外标识符”。同时,复制粘贴运行时不会出现单一错误 下面是一个完整的代码示例: use admin db.dropUser("root");

我得到了一个要粘贴到mongodb shell中的命令列表。通常我以管理员的身份打开cmd,将目录更改为MongoDB bin文件夹,启动mongo.exe并简单地进行复制粘贴。我的问题是如何编写一个正确的文件来打开MongoShell并直接发送命令列表?尝试将代码示例保存为test.js,但“mongo.exe test.js”始终返回语法错误:意外标识符”。同时,复制粘贴运行时不会出现单一错误

下面是一个完整的代码示例:

    use admin
db.dropUser("root");
db.dropUser("someuser");
db.dropUser("someadmin");
db.dropUser("someuser");
db.dropUser("someadmin");
db.createUser(
{
user: "root",
pwd: "pswd",
customData: { description: "default admin user" },
roles: [
"readWriteAnyDatabase",
"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"clusterAdmin"
]
}
);
use usersdb;
db.dropUser("someuser");
db.dropUser("someadmin");
db.dropUser("someuser");
db.dropUser("someadmin");
use maindb;
db.dropUser("somereader");
db.dropUser("someuser");
db.dropUser("someadmin");
db.dropUser("someuser");
db.dropUser("someadmin");
db.createUser(
{
user: "somereader",
pwd: "somereader",
customData: { description: "maindb read-only user" },
roles: [
"read"
]
}
);
db.createUser(
{
user: "someuser",
pwd: "30d1ef22ff41d9b031b6e1d80a3cbd695ea78835f821093f6f836bbe6107aa5b",
customData: { description: "maindb app user" },
roles: [
"readWrite",
{role: "read", db: "someusers"},
{role: "read", db: "admin"},
{role: "clusterAdmin", db: "admin"}
]
}
);
db.createUser(
{
user: "someadmin",
pwd: "eac55b089924b85e17a44070ed7cb0ebef74263786fccaf005f5955eafaae934",
customData: { description: "maindb admin user" },
roles: [
"readWrite",
"dbAdmin",
{role: "readWrite", db: "someusers"},
{role: "dbAdmin", db: "someusers"},
{role: "read", db: "admin"},
{role: "clusterAdmin", db: "admin"}
]
}
);

提前谢谢你

首先,创建一个JavaScript文件以批处理您的操作:

test.js
//#####################################
var count = db.foo.find().count()
print("Total count:"+count)
现在,在终端上:

mongo <db-name> test.js

Output:
MongoDB shell version v3.4.15
connecting to: mongodb://127.0.0.1:27017/foo
MongoDB server version: 3.4.15
Total count: 68
mongo test.js
输出:
MongoDB外壳版本3.4.15
连接到:mongodb://127.0.0.1:27017/foo
MongoDB服务器版本:3.4.15
总数:68

注意,该脚本文件不支持
use
,因此必须在
mongo
命令中提供名称。参考官方文档:

如果从js文件或命令行中的as--eval打开,我总是会得到“语法错误:意外标识符”。但是直接复制粘贴是有效的。请告诉我我做错了什么?“是否可能”不是一个符合本网站规则的问题。请阅读并学习!并提供您的代码的一个完整版本!只需创建一个javascript文件来批处理您的操作,使用mongo-
mongo javascript file.js在命令上运行脚本,您也可以使用此mongo命令创建一个
bash
脚本并直接执行。@RaKa只需使用代码示例自行尝试即可。这是行不通的。