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