文章目录
原文链接:
MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中 可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一组列标识的实体的集合对应于关系数据库表中的行。下面通过熟悉MongoDB的基本管理 命令,来了解MongoDB提供的DBMS的基本功能和行为。
MongoDB命令帮助系统
在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控。看一下MongoDB的命令帮助系统:
[plain] view plaincopy
- root@dev2:~# mongo
- MongoDB shell version: 1.8.3
- connecting to: test
- > help
- db.help() help on db methods
- db.mycoll.help() help on collection methods
- rs.help() help on replica set methods
- help connect connecting to a db help
- help admin administrative help
- help misc misc things to know
- help mr mapreduce help
- show dbs show database names
- show collections show collections in current database
- show users show users in current database
- show profile show most recent system.profile entries with time >= 1ms
- use <db_name> set current database
- db.foo.find() list objects in collection foo
- db.foo.find( { a : 1 } ) list objects in foo where a == 1
- it result of the last line evaluated; use to further iterate
- DBQuery.shellBatchSize = x set default number of items to display on shell
- exit quit the mongo shell
这是MongoDB最顶层的命令列表,主要告诉我们管理数据库相关的一些抽象的范畴:数据库操作帮助、集合操作帮助、管理帮助。如果你想了解数据库操作更详细的帮助命令,可以直接使用db.help(),如下所示:
[plain] view plaincopy
- > db.help()
- DB methods:
- db.addUser(username, password[, readOnly=false])
- 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.currentOp() displays the current operation in the db
- db.dropDatabase()
- db.eval(func, args) run code server-side
- db.getCollection(cname) same as db['cname'] or db.cname
- db.getCollectionNames()
- db.getLastError() - just returns the err msg string
- db.getLastErrorObj() - return full status object
- db.getMongo() get the server connection object
- db.getMongo().setSlaveOk() allow this connection to read from the nonmaster member of a replica pair
- 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.isMaster() check replica primary status
- db.killOp(opid) kills the current operation in the db
- db.listCommands() lists all the db commands
- db.printCollectionStats()
- db.printReplicationInfo()
- db.printSlaveReplicationInfo()
- db.printShardingStatus()
- db.removeUser(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.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all
- db.shutdownServer()
- db.stats()
- db.version() current version of the server
- db.getMongo().setSlaveOk() allow queries on a replication slave server
对数据库进行管理和操作的基本命令,可以从上面获取到。如果想要得到更多,而且每个命令的详细用法,可以使用上面列出的db.listCommands()查询。
另一个比较基础的是对指定数据库的集合进行操作、管理和监控,可以通过查询db.mycoll.help()获取到:
[plain] view plaincopy
- > db.mycoll.help()
- DBCollection help
- db.mycoll.find().help() - show DBCursor help
- db.mycoll.count()
- db.mycoll.dataSize()
- db.mycoll.distinct( key ) - eg. db.mycoll.distinct( 'x' )
- db.mycoll.drop() drop the collection
- db.mycoll.dropIndex(name)
- db.mycoll.dropIndexes()
- db.mycoll.ensureIndex(keypattern[,options]) - options is an object with these possible fields: name, unique, dropDups
- db.mycoll.reIndex()
- db.mycoll.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
- e.g. db.mycoll.find( {x:77} , {name:1, x:1} )
- db.mycoll.find(...).count()
- db.mycoll.find(...).limit(n)
- db.mycoll.find(...).skip(n)
- db.mycoll.find(...).sort(...)
- db.mycoll.findOne([query])
- db.mycoll.findAndModify( { update : ... , remove : bool [, query: {}, sort: {}, 'new': false] } )
- db.mycoll.getDB() get DB object associated with collection
- db.mycoll.getIndexes()
- db.mycoll.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } )
- db.mycoll.mapReduce( mapFunction , reduceFunction , <optional params> )
- db.mycoll.remove(query)
- db.mycoll.renameCollection( newName , <dropTarget> ) renames the collection.
- db.mycoll.runCommand( name , <options> ) runs a db command with the given name where the first param is the collection name
- db.mycoll.save(obj)
- db.mycoll.stats()
- db.mycoll.storageSize() - includes free space allocated to this collection
- db.mycoll.totalIndexSize() - size in bytes of all the indexes
- db.mycoll.totalSize() - storage allocated for all data and indexes
- db.mycoll.update(query, object[, upsert_bool, multi_bool])
- db.mycoll.validate() - SLOW
- db.mycoll.getShardVersion() - only for use with sharding
有关数据库和集合管理的相关命令,是最基础和最常用的,如集合查询、索引操作等。
基本命令及实例
下面通过实际的例子来演示一些常见的命令:
(一)基本命令
1、show dbs
显示当前数据库服务器上的数据库
2、use pagedb
切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等
3、show collections
显示数据库中所有的集合(collection)
4、db.serverStatus()
查看数据库服务器的状态。示例如下所示:
[plain] view plaincopy
- {
- "host" : "dev2",
- "version" : "1.8.3",
- "process" : "mongod",
- "uptime" : 845446,
- "uptimeEstimate" : 839192,
- "localTime" : ISODate("2011-12-27T04:03:12.512Z"),
- "globalLock" : {
- "totalTime" : 845445636925,
- "lockTime" : 13630973982,
- "ratio" : 0.016122827283818857,
- "currentQueue" : {
- "total" : 0,
- "readers" : 0,
- "writers" : 0
- },
- "activeClients" : {
- "total" : 0,
- "readers" : 0,
- "writers" : 0
- }
- },
- "mem" : {
- "bits" : 64,
- "resident" : 12208,
- "virtual" : 466785,
- "supported" : true,
- "mapped" : 466139
- },
- "connections" : {
- "current" : 27,
- "available" : 792
- },
- "extra_info" : {
- "note" : "fields vary by platform",
- "heap_usage_bytes" : 70895216,
- "page_faults" : 17213898
- },
- "indexCounters" : {
- "btree" : {
- "accesses" : 4466653,
- "hits" : 4465526,
- "misses" : 1127,
- "resets" : 0,
- "missRatio" : 0.00025231420484197006
- }
- },
- "backgroundFlushing" : {
- "flushes" : 14090,
- "total_ms" : 15204393,
- "average_ms" : 1079.0910574875797,
- "last_ms" : 669,
- "last_finished" : ISODate("2011-12-27T04:02:28.713Z")
- },
- "cursors" : {
- "totalOpen" : 3,
- "clientCursors_size" : 3,