Mongo 脚本始终连接到本地主机
Mongo Script always connects to localhost
我正在构建一个 MongoDB 数据库并在本地主机上进行。我一直在使用 JS 脚本来做这件事。我通过使用 var conn = new Mongo('localhost:27017')
启动我的脚本来测试本地主机上的数据库,一切正常。但是当我尝试 运行 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
您是先通过 shell 连接到 mLab MongoDB 还是从您的计算机执行脚本?如果您正在 shelling 到 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();
});
您在控制台中看到了该输出,因为您正在使用
调用脚本
mongo script.js.
默认连接到本地主机。由于 JS 文件中的连接语句,您看不到它。
如果你想运行一个JS脚本在一个mongoshell到mlab。做这样的事情。
mongo ds115671.mlab.com:15671/finance_tracker -u <user> -p <password> script.js
这将连接到您的 mlab mongodb,然后 运行 您的脚本。
然后在你 script.js 中你可以有类似这样的语句。
db['users'].insert({'test': 'test'});
上面的示例会将文档插入到用户集合中。不确定你想在你的脚本中 运行 什么,所以我只写了一个我自己的例子。希望对您有所帮助。
我正在构建一个 MongoDB 数据库并在本地主机上进行。我一直在使用 JS 脚本来做这件事。我通过使用 var conn = new Mongo('localhost:27017')
启动我的脚本来测试本地主机上的数据库,一切正常。但是当我尝试 运行 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
您是先通过 shell 连接到 mLab MongoDB 还是从您的计算机执行脚本?如果您正在 shelling 到 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();
});
您在控制台中看到了该输出,因为您正在使用
调用脚本mongo script.js.
默认连接到本地主机。由于 JS 文件中的连接语句,您看不到它。
如果你想运行一个JS脚本在一个mongoshell到mlab。做这样的事情。
mongo ds115671.mlab.com:15671/finance_tracker -u <user> -p <password> script.js
这将连接到您的 mlab mongodb,然后 运行 您的脚本。 然后在你 script.js 中你可以有类似这样的语句。
db['users'].insert({'test': 'test'});
上面的示例会将文档插入到用户集合中。不确定你想在你的脚本中 运行 什么,所以我只写了一个我自己的例子。希望对您有所帮助。