无法通过身份验证制作基本的mongo shell脚本

时间:2014-10-15 18:20:17

标签: 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

为什么我没有结果?

1 个答案:

答案 0 :(得分:14)

我终于完成了这项工作。这就是我最终做到的方式:

首先,我创建了一个名为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文件时,不要期望使用相同的&#34; javascript&#34;你习惯的功能。我刚刚学到了一个很难的教训,并非所有的javascript都是一样的。例如,您不能在通过mongo运行的javascript文件中使用Console.log(),因为console.log实际上不是核心javascript,而是特定于浏览器和节点实现的函数。