14

我有一个非常复杂的问题,我想我可以通过编写一个 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

为什么我没有结果?

4

1 回答 1

23

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

首先,我创建了一个名为 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,而是特定于浏览器和节点实现的函数。

于 2014-10-15T20:47:11.250 回答