征服 Mongodb 之 常用命令、基本数据类型

    手里有本《MongoDB权威指南》,打算做个读书笔记,把常规命令、数据类型过一遍,强迫记忆。酷

集群配置相关链接:

征服 Mongodb 之 安装与系统服务配置

征服 Mongodb 之 主从复制&集群复制

基本操作相关链接:

征服 Mongodb 之 常用命令、基本数据类型  

征服 Mongodb 之 Modifier初识

征服 Mongodb 之 Modifier增强

征服 Mongodb 之 CRUD

    关于如何安装、配置、启动MongoDB等,参考上篇文章。

    一、常规命令

  • 登录

    类似于MySQL登录,可参考如下命令:

# mongo --help
MongoDB shell version: 2.0.7
usage: mongo [options] [db address] [file names (ending in .js)]
db address can be:
  foo                   foo database on local machine
  192.169.0.5/foo       foo database on 192.168.0.5 machine
  192.169.0.5:9999/foo  foo database on 192.168.0.5 machine on port 9999
options:
  --shell               run the shell after executing files
  --nodb                don't connect to mongod on startup - no 'db address' arg expected
  --norc                will not run the ".mongorc.js" file on start up
  --quiet               be less chatty
  --port arg            port to connect to
  --host arg            server to connect to
  --eval arg            evaluate javascript
  -u [ --username ] arg username for authentication
  -p [ --password ] arg password for authentication
  -h [ --help ]         show this usage information
  --version             show version information
  --verbose             increase verbosity
  --ipv6                enable IPv6 support (disabled by default)

file names: a list of files to run. files have to end in .js and will exit after unless --shell is specified
 

    譬如,我经常这么用,一步到位:

  

# mongo 10.11.20.140/zlex
MongoDB shell version: 2.0.7
connecting to: 10.11.20.140/zlex
> 
 
  •  查看当前数据库/切换数据库    
# mongo 
MongoDB shell version: 2.0.7
connecting to: test
> db
test
> use zlex
switched to db zlex
> 
 
  •  查看当前数据库下的表,及索引 
> show collections
system.indexes
test
user
    system.indexes索引信息

    test、user是数据表

  •  查看当前数据库、表状态
> db.stats()
{
        "db" : "test",
        "collections" : 6,
        "objects" : 16,
        "avgObjSize" : 44.75,
        "dataSize" : 716,
        "storageSize" : 32768,
        "numExtents" : 6,
        "indexes" : 4,
        "indexSize" : 32704,
        "fileSize" : 201326592,
        "nsSizeMB" : 16,
        "ok" : 1
}
> db.blog.stats()
{
        "ns" : "test.blog",
        "count" : 0,
        "size" : 0,
        "storageSize" : 8192,
        "numExtents" : 1,
        "nindexes" : 1,
        "lastExtentSize" : 8192,
        "paddingFactor" : 1.56,
        "flags" : 1,
        "totalIndexSize" : 8176,
        "indexSizes" : {
                "_id_" : 8176
        },
        "ok" : 1
}
   PS:MongoDB 1.8支持16MB的消息长度
  •   一些边边角角的函数,你懂滴,横向思维下大笑
> 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.logout()
        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.fsyncLock() flush data to disk and lock server for backups
        db.fsyncUnock() unlocks server following a db.fsyncLock()
> 

    二、基本数据类型

  • null:空值,或不存在的字段
{"x":null}
  • undefined:未定义
{"x":undefined}
  • boolean:布尔,'true' | 'false'
{"x":true}
  • double:浮点数,不管是32位,还是64位的整数,最后都被统一为64位浮点数
{"x":3.14}
{"x":314}
     在JavaScript中只有一种数字类型,在MongoDB中有3中数字类型(32位/64位整数、64位浮点数)。为了完全兼容这三种数字类型,在shell操作时,都统一为64位浮点数。
  • String:字符串,其值为UTF-8编码
{"x":"test"}
  •  id:唯一标识
{"x":new ObjectId()}
  •  Date:日期
{"x":new Date()}
  •  Arrary:数组
{"x":["a", "b", "c"]}
  • Document:内嵌文档
{"x":{"name":"zlex"}}
  • Code:代码,即JavaScript代码
{"x": function(){/* ... */}}
     还没有试过,这个在页面上直接吐代码,一定很强大。 眨眼
  • Regular Expression:正则表达式
{"x": /foobar/i}
    暂时没理解这个正则表达式存在库里,可以起到什么效果。。。     今天先真理这么多,不能一口吃成胖子,后续继续整理。休息,休息一会! 大笑 集群配置相关链接:

猜你喜欢

转载自snowolf.iteye.com/blog/1774517
今日推荐