MongoDb

$ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
$ echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
$ apt-get update
$ apt-get install -y mongodb-org

Добавление внешнего IP адреса

Version 2.x

nano /etc/mongod.conf

port: 27017
bind_ip: 127.0.0.1,89.2.1.1

Подробнее: https://docs.mongodb.org/v2.2/reference/configuration-options/

Version 3.x

nano /etc/mongod.conf

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,89.2.1.1

Подробнее: https://docs.mongodb.org/v3.2/reference/configuration-options/

  • sudo pecl install mongo
$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> use admin;
switched to db admin

2.4

  • > use admin;
  • > db.removeUser('admin');
  • > db.addUser({user:'admin', pwd:'pass', roles: ['dbAdminAnyDatabase']});
  • > db.auth('admin','pass');

Roles

  • read
  • readWrite
  • dbAdmin
  • dbOwner
  • userAdmin
  • clusterAdmin
  • clusterManager
  • clusterMonitor
  • hostManager
  • readAnyDatabase
  • readWriteAnyDatabase
  • userAdminAnyDatabase
  • dbAdminAnyDatabase

http://docs.mongodb.org/manual/reference/built-in-roles/

2.6.4

  • > use some_database
  • > db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });
  • > db.dropUser('admin');
  • > db.createUser({ user:"user", pwd:"password", roles:["read","readWrite","dbAdmin"]});
  • > db.auth('admin','pass');

3.0.0

  • > use admin;
  • > db.dropUser('admin')

3.2.3

  • db.changeUserPassword("reporting", "SOh3TbYhxuLiW8ypJPxmt1oOfL")
  • db.runCommand(
      {
        usersInfo:"admin",
        showPrivileges:true
      }
    );

Backup

Если не задан пароль у юзера admin в БД admin

mongodump --out /tmp/mongodump

Если задан пароль у юзера

mongodump --username admin --password password --out /tmp/mongodump

Если дамп выполняется с учетом пользовательских настроек

mongodump --host localhost --port 3017 --username admin --password pass --out /tmp/mongodump

Restore

mongorestore --db some_other_db -c some_or_other_collection tmp/mongodump/some_collection.bson
mongorestore --db some_other_db --username user --password pass ./
  • db.getCollection('rooms').find({roomid: 'user-53'})
  • db.users.find({"name": /.*Супр.*/})
  • db.unicorns.update({name: 'Roooooodles'}, {weight: 590})
  • db.unicorns.update({weight: 590}, {$set: {name: 'Roooooodles', dob: new Date(1979, 7, 18, 18, 44), loves: ['apple'], gender: 'm', vampires: 99}})
  • db.getCollection('rooms').update({},{messageCount: 0})
  • db.getCollection('rooms').update({},{$set: {'messageCount': 0}}, {multi: true});
  • db.getCollection('rooms').update(
       {},
       { $set: {'messageCount': 0}},
       { upsert: true, multi: true }
    );
     
    db.getCollection('rooms').find({});

MongoDB: geoNear не возвращаясь расстояние

Мне нужно, чтобы изменить существующий геопространственных запросов таким образом, что она включает в себя расстояние в результаты поиска. (Оба документа и существующий запрос с использованием устаревших координатных пар.) Исходный запрос использует $near. Чтение документации MongoDB похоже, geoNear должен возвратить расстояние, как показано на нескольких примерах.

В то время как я был в состоянии изменить запрос, чтобы использовать geoNear, расстояния не включены в результаты поиска. Вот пример нового запроса:

{ 
  geoNear: 'users',
  near: [ '0', '0' ],
  maxDistance: '90',
  query: { userName: { '$regex': '^test' } }
}

Единственное, что не понятно, как Mongo связей в месте, указанному в запросе, на расположение документа. В моем случае пользователи документе есть поле с именем lastKnownPosition. Как работает Mongo даже знаю, на запрос к этому полю?

Вот пример результатов поиска:

{ 
    "__v" : 0 , 
    "_id" : { "$oid" : "5413824f8b4d6f7505120a53"} , 
    "lastKnownPosition" : { "lon" : 0 , "lat" : 0} ", 
    "userName" : "test123"
}