无法使用身份验证制作基本的mongo shell脚本

Dal*_*ley 11 mongodb mongo-shell

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

mongo admin -u <username> -p
Run Code Online (Sandbox Code Playgroud)

在这一点上,我输入密码和万岁!我有一个壳.但这对我的问题不起作用.作为测试,我创建了一个名为test.js的文件,其中包含的是:

var conn = new Mongo()

db = conn.getDB("test");
db.cust.find();
Run Code Online (Sandbox Code Playgroud)

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

mongo test.js
Run Code Online (Sandbox Code Playgroud)

在这一点上,我得到这个:

MongoDB shell version: 2.4.10
connecting to: test
Run Code Online (Sandbox Code Playgroud)

为什么我没有结果?

Dal*_*ley 17

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

首先,我创建了一个名为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());
}
Run Code Online (Sandbox Code Playgroud)

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

mongo test.js
Run Code Online (Sandbox Code Playgroud)

我还想指出我在尝试与其他任何有问题的开发人员这样做时学到的一些东西.

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

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