Mongo脚本始终连接到localhost

时间:2017-05-28 16:32:23

标签: mongodb mlab

我正在构建一个MongoDB数据库并且正在localhost上这样做。我一直在使用JS脚本。我正在使用var conn = new Mongo('localhost:27017')启动我的脚本来测试localhost上的数据库,一切正常。但是当我尝试运行mLab实例的脚本时,使用:

var conn = new Mongo('mongodb://<dbuser>:<dbpassword>@ds115671.mlab.com:15671/finance_tracker')

(显然替换了用户名和密码),我得到的唯一输出是:

MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2

我尝试使用主机和端口,如manual中所述,然后使用db.auth(),如下所示:

conn = new Mongo('ds115671.mlab.com:15671');
db = conn.getDB("finance_tracker");
db.auth(username, password);

我收到与之前相同的消息,声明我已连接到本地mongo实例。

如何编写我的脚本以便在在线Mongo实例上执行?

修改 以下是该脚本的示例:

的script.js

conn = new Mongo('ds115671.mlab.com:15671');
db = conn.getDB("finance_tracker");
db.auth('username', 'password');

db.users.insert({
    firstName: 'eddard',
    surname: 'stark',
    email: 'eddardstark@gmail.com',
    group: ObjectId()
});

var eddardstark = db.users.findOne({email:'eddardstark@gmail.com'});
var groupOneOid = eddardstark.group;

db.users.createIndex({email:1}, {unique: true});

db.users.insertMany([{
    userFirstName: 'catelyn',
    surname: 'tully',
    email: 'catelynstark@gmail.com',
    group: groupOneOid
}, {
    userFirstName: 'robb',
    surname: 'stark',
    email: 'robbstark@gmail.com',
    group: groupOneOid
}])

然后使用mongo script.js

从命令行运行

2 个答案:

答案 0 :(得分:3)

您在控制台中看到了该输出,因为您使用

调用脚本
mongo script.js.

默认情况下连接到localhost。由于你在JS文件中的连接声明,你没有看到它。

如果你想在mongo shell中运行一个JS脚本到mlab。做这样的事。

mongo ds115671.mlab.com:15671/finance_tracker -u <user> -p <password> script.js

这将连接到您的mlab mongodb,然后运行您的脚本。 然后在你的script.js中,你可以有类似这样的陈述。

db['users'].insert({'test': 'test'});

上面的示例将文档插入到users集合中。不知道你想在你的脚本中运行什么,所以我只写了一个我自己的例子。我希望这会有所帮助。

答案 1 :(得分:0)

您是第一次通过shell连接到mLab MongoDB还是从计算机执行脚本?如果你正在炮击mLab,那么你已经连接了,你的脚本可以在没有连接的情况下开始查询。如果您在计算机上运行脚本,则下面显示了工作示例:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://<dbuser>:<dbpassword>@ds115671.mlab.com:15671/finance_tracker', function(err, db) {
  console.log("Connected correctly to server");
  db.close();
});