我正在构建一个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
答案 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();
});