mongodb - 无法制作带有身份验证的基本 mongo shell 脚本

标签 mongodb mongo-shell

我有一个非常复杂的问题,我认为我可以通过编写 mongo shell 脚本来解决,但我什至无法建立一个简单的连接。我有一个本地 mongo 数据库,它需要一个用户名/密码,我通常这样访问:

mongo admin -u <username> -p

此时我输入了密码,万岁!我有一个外壳。但这对我的问题不起作用。作为测试,我创建了一个名为 test.js 的文件,其中包含以下内容:

var conn = new Mongo()

db = conn.getDB("test");
db.cust.find();

然后我从命令行运行脚本,如下所示:

mongo test.js

此时我得到了这个:

MongoDB shell version: 2.4.10
connecting to: test

为什么我没有得到结果?

最佳答案

我终于成功了。这就是我最终的做法:

首先,我创建了一个名为 test.js 的文件,其中包含以下内容:

db = connect("localhost:27017/admin");

db.auth('username','password');

db = db.getSiblingDB('test');

var cursor = db.cust.find();

while (cursor.hasNext()) {
   printjson(cursor.next());
}

然后我从命令行运行此命令:

mongo test.js

我还想指出一些我在尝试向遇到问题的其他开发人员执行此操作时学到的东西。

1)如果您添加一个新数据库,并且您正在运行带有身份验证的 mongo,您需要首先登录到身份验证数据库,然后切换到所需的数据库(如我的示例所示),或者您需要添加一个用户/所需数据库的密码(就像我一开始就应该做的那样)

2) 通过 mongo 运行 javascript 文件时,不要期望使用您习惯的相同“javascript”函数。我刚刚吸取了惨痛的教训:并非所有的 javascript 都是一样的。例如,您不能在通过 mongo 运行的 javascript 文件中使用 Console.log(),因为 console.log 实际上不是核心 javascript,而是特定于浏览器和节点实现的函数。

关于mongodb - 无法制作带有身份验证的基本 mongo shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26389424/

相关文章:

node.js - 我应该如何对 Mongoose 中每个相关文档进行文档计数?

mongodb - 使用 MongoDB API 连接到 CosmosDB 时出现超时错误

mongodb - 未在 mongo shell 中设置的变量

javascript - 如何使用mongo shell加载多个js文件到数据库?

shell - 如何向 MongoDB 中的字典添加另一个值?

bash - 在作为另一个命令一部分的Heredoc中解析变量

MongoDB - 将简单字段更改为对象

sql - 如何修复我在 nosql (mongodb) 中的 m..n 关系?

mongodb - meteor react : in constructor collection is empty

mongodb - apollostack/graphql-server - 如何从解析器获取查询中请求的字段