Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>Server mongo nosql}} ====== MongoDb ====== ===== Документация ===== * http://mongoid.org/en/mongoid/docs/querying.html (ruby) * http://jsman.ru/mongo-book/ ===== Установка ===== <code bash> $ 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 </code> ===== Настройка ===== ==== Добавление внешнего IP адреса ==== === Version 2.x === nano /etc/mongod.conf <code> port: 27017 bind_ip: 127.0.0.1,89.2.1.1 </code> === Version 3.x === nano /etc/mongod.conf <code> # network interfaces net: port: 27017 bindIp: 127.0.0.1,89.2.1.1 </code> ===== PHP ===== * sudo pecl install mongo ===== Создание пользователя ===== * # **mongo** <code> MongoDB shell version: 2.4.9 connecting to: test </code> * # **use admin;** <code> switched to db admin </code> ==== 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") ===== Привелегии ===== * <code> db.runCommand( { usersInfo:"admin", showPrivileges:true } ); </code> ===== Backup / Restore ===== ==== 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 ./ ===== SEARCH ===== * db.getCollection('rooms').find({roomid: 'user-53'}) * db.users.find({"name": /.*Супр.*/}) ===== INSERT ===== ===== UPDATE ($where, $params) ===== * 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}); * <code php> db.getCollection('rooms').update( {}, { $set: {'messageCount': 0}}, { upsert: true, multi: true } ); db.getCollection('rooms').find({}); </code> ===== geoNear ===== ==== 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" } ===== Клиенты ===== * http://3t.io/mongochef/download/platform * http://robomongo.org/ * https://github.com/jeromelebel/MongoHub-Mac * https://docs.mongodb.org/ecosystem/tools/administration-interfaces/ * http://mongodb-tools.com/ ===== Статьи ===== * [[https://habrahabr.ru/post/251745/|Анонс MongoDB 3]] * [[https://habrahabr.ru/post/252129/|Вышла Mongodb 3.0 Production Release]] * [[https://habrahabr.ru/post/192870/|Релиз mongodb 3.2 немного подробностей]]СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal