Основные команды mongo: https://blog.e-zest.com/basic-commands-for-mongodb.
Мой конспект: https://github.com/cherepakhin/senior/blob/main/new_site/mongo/mongo.md.
Статья с Хабр: Шпаргалка по mongodb: e-commerce, миграция, часто применяемые операции и немного о транзакциях.
Установка Linux
$ apt-get install -y mongodb-org
Запуск
$ mongo
Помощь:
> db.help() DB methods: db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [just calls db.runCommand(...)] db.aggregate([pipeline], {options}) - performs a collectionless aggregation on this database; returns a cursor db.auth(username, password) db.cloneDatabase(fromhost) db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb, todb, fromhost) db.createCollection(name, {size: ..., capped: ..., max: ...}) db.createView(name, viewOn, [{$operator: {...}}, ...], {viewOptions}) db.createUser(userDocument) db.currentOp() displays currently executing operations in the db db.dropDatabase() db.eval() - deprecated db.fsyncLock() flush data to disk and lock server for backups db.fsyncUnlock() unlocks server following a db.fsyncLock() db.getCollection(cname) same as db['cname'] or db.cname db.getCollectionInfos([filter]) - returns a list that contains the names and options of the db's collections db.getCollectionNames() db.getLastError() - just returns the err msg string db.getLastErrorObj() - return full status object db.getLogComponents() db.getMongo() get the server connection object db.getMongo().setSlaveOk() allow queries on a replication slave server db.getName() db.getPrevError() db.getProfilingLevel() - deprecated db.getProfilingStatus() - returns if profiling is on and slow threshold db.getReplicationInfo() db.getSiblingDB(name) get the db at the same server as this one db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set db.hostInfo() get details about the server's host db.isMaster() check replica primary status db.killOp(opid) kills the current operation in the db db.listCommands() lists all the db commands db.loadServerScripts() loads all the scripts in db.system.js db.logout() db.printCollectionStats() db.printReplicationInfo() db.printShardingStatus() db.printSlaveReplicationInfo() db.dropUser(username) db.repairDatabase() db.resetError() db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj: 1} db.serverStatus() db.setLogLevel(level,) db.setProfilingLevel(level,slowms) 0=off 1=slow 2=all db.setWriteConcern() - sets the write concern for writes to the db db.unsetWriteConcern() - unsets the write concern for writes to the db db.setVerboseShell(flag) display extra information in shell output db.shutdownServer() db.stats() db.version() current version of the server
Dump и Restore
Dump:
$ mongodump --out=./dump1
Restore:
$ mongorestore ./dump1
Получение версии mongo:
> db.version() 3.6.3
Получение всех баз данных:
> show dbs admin 0.000GB config 0.000GB db3 0.000GB local 0.000GB
Создание новой базы данных:
use DATABASE_NAME
> use db5 switched to db db5
Какая текущая база данных:
> db db5
Удаление базы:
> use db5 > db.dropDatabase()
Коллекции:
Создание КОЛЛЕКЦИИ:
> use dbTest > db.createCollection('Empl1') { "ok" : 1 } > show collections Empl1
Удаление КОЛЛЕКЦИИ:
> db.Empl1.drop() > show collections
Вставка ДОКУМЕНТА в КОЛЛЕКЦИЮ:
> db.COLLECTION_NAME.insert(document)
Пример:
> db.createCollection('EmplList') { "ok" : 1 } > db.EmplList.insert({name: 'NAME1', address: 'ADDR1'}) WriteResult({ "nInserted" : 1 }) > db.EmplList.find() { "_id" : ObjectId("6778c9d63e90cb7a981b32a5"), "name" : "NAME1", "address" : "ADDR1" }
Обновление ДОКУМЕНТА в КОЛЛЕКЦИИ:
db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
> db.EmplList.update({name: 'NAME1'},{$set:{'name':'NEW NAME1', 'address': 'NEW ADDR1'}}) > db.EmplList.find() { "_id" : ObjectId("6778c9d63e90cb7a981b32a5"), "name" : "NEW NAME1", "address" : "ADDR1" } > db.EmplList.update({name: 'NEW NAME1'},{$set:{'name':'NEW NAME2', 'address': 'NEW ADDR2'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.EmplList.find() { "_id" : ObjectId("6778c9d63e90cb7a981b32a5"), "name" : "NEW NAME2", "address" : "NEW ADDR2" } > db.EmplList.update({address: 'NEW ADDR2'},{$set:{'name':'NAME2', 'address': 'ADDR2'}})
Сохранение DOCUMENT:
Синтаксис:
> db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
Пример:
> db.EmplList.save({"_id": new ObjectId("6778c9d63e90cb7a981b32a6"), name: "NAME_SAVED", address: "ADDR_SAVED"}); > db.EmplList.find() { "_id" : ObjectId("6778c9d63e90cb7a981b32a5"), "name" : "NAME2", "address" : "ADDR2" } { "_id" : ObjectId("6778c9d63e90cb7a981b32a6"), "name" : "NAME_SAVED", "address" : "ADDR_SAVED" }
Удаление DOCUMENT:
Синтаксис:
> db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
Пример:
> db.EmplList.find() { "_id" : ObjectId("6778c9d63e90cb7a981b32a5"), "name" : "NAME2", "address" : "ADDR2" } { "_id" : ObjectId("6778c9d63e90cb7a981b32a6"), "name" : "NAME_SAVED", "address" : "ADDR_SAVED" } >db.EmplList.remove({"name" : "NAME_SAVED"}) WriteResult({ "nRemoved" : 1 }) > db.EmplList.find() { "_id" : ObjectId("6778c9d63e90cb7a981b32a5"), "name" : "NAME2", "address" : "ADDR2" }
Отличия save от update:
- update обновляяет документ, если он СУЩЕСТВУЕТ
- save обнодяяет документ, если он СУЩЕСТВУЕТ, и если не существует, то создает новый документ.