Я строю базу данных MongoDB и делаю это на localhost. Я делал это с помощью сценариев 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?

< Сильный > EDIT : Вот пример скрипта:

< EM> 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
JoeWemyss 28 Май 2017 в 19:32

2 ответа

Лучший ответ

Вы видите этот вывод в консоли, потому что вы вызываете скрипт с

mongo script.js.

Который по умолчанию подключается к localhost. Вы не видите этого из-за вашего оператора соединения внутри файла JS.

Если вы хотите запустить JS-скрипт в mongo-оболочке для mlab. Сделай что-нибудь подобное.

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

Это подключится к вашему mlab mongodb, а затем запустит ваш скрипт. Тогда в вашем script.js может быть что-то вроде этого утверждения.

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

Пример выше вставит документ в коллекцию пользователей. Не уверен, что вы хотите запустить в своем скрипте, поэтому я просто написал собственный пример. Надеюсь, это поможет.

3
Samip Suwal 28 Май 2017 в 20:19

Вы сначала подключаетесь к 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();
});
0
Priidik Vaikla 28 Май 2017 в 18:46