MongoDB的基本操作
Mongodb中关键字种类:
db(数据库实例级别)
db本身
db.connection 数据库下的集合信息
db.collection.xxx(
rs(复制集级别)
sh(分片级别)
rs.status() #副本集状态,一个primary,其它SECONDARY。primary是主,只有primary能写入,从库无法插入数据
rs.config() ##获取配置
rs.slaveOk() #SECONDARY需要声明是slave才能查看数据
查询操作
在客户端指定数据库进行连接:(默认连接本机test数据库)
[mongod@MongoDB ~]$ mongo 10.0.0.152/admin MongoDB shell version: 3.2.8 connecting to: 10.0.0.152/admin
> db admin
查看当前数据库版本
> db.version()
切换数据库
> use test; switched to db test
显示当前数据库
> db test > db.getName() test
查询所有数据库
> show dbs; smile 0.000GB local 0.000GB test 0.000GB > show databases; smile 0.000GB local 0.000GB test 0.000GB
查看smile数据库当前状态
> use smile;
> db.stats() { "db" : "smile", "collections" : 1, "objects" : 10000, "avgObjSize" : 80, "dataSize" : 800000, "storageSize" : 258048, "numExtents" : 0, "indexes" : 1, "indexSize" : 94208, "ok" : 1 }
查看当前数据库的连接机器地址
> db.getMongo() connection to 127.0.0.1
1.5.2 数据管理
创建数据库
> use smile;
说明:
创建数据库:
当use的时候,系统就会自动创建一个数据库。
如果use之后没有创建任何集合。系统就会删除这个数据库。
删除数据库
> show dbs; smile 0.000GB local 0.000GB test 0.000GB
> use smile switched to db smile
> db.dropDatabase() { "dropped" : "smile", "ok" : 1 }
说明:
删除数据库:
如果没有选择任何数据库,会删除默认的test数据库
创建集合
方法一:
> use smile; switched to db smile
> db.createCollection('a') { "ok" : 1 }
> db.createCollection('b') { "ok" : 1 }
查看当前数据下的所有集合
> show collections; a b
> db.getCollectionNames() [ "a", "b" ]
方法二:
当插入一个文档的时候,一个集合就会自动创建。
> use smile; switched to db smile
> db.c.insert({name:'smile'}); WriteResult({ "nInserted" : 1 })
> db.c.insert({url:'http://blog.nmtui.com'}); WriteResult({ "nInserted" : 1 })
查看创建的合集
> db.getCollectionNames() [ "a", "b", "c" ]
查看合集里的内容
> db.c.find() { "_id" : ObjectId("5a4cbcea83ec78b7bea904f8"), "name" : "smile" } { "_id" : ObjectId("5a4cbcfc83ec78b7bea904f9"), "url" : "http://blog.nmtui.com" }
重命名集合
> db.c.renameCollection("smile") { "ok" : 1 }
> db.getCollectionNames() [ "a", "b", "smile" ]
删除合集
> db.a.drop() true
> db.getCollectionNames() [ "b", "smile" ]
插入1w行数据
> for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); } WriteResult({ "nInserted" : 1 })
查询集合中的查询所有记录
> db.log.find()
注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。
> DBQuery.shellBatchSize=50; # 每页显示50条记录 50 app> db.log.findOne() # 查看第1条记录 app> db.log.count() # 查询总的记录数 app> db.log.find({uid:1000}); # 查询UUID为1000的数据
删除集合中的记录数
> db.log.distinct("name") # 查询去掉当前集合中某列的重复数据 [ "mongodb" ]
> db.log.remove({}) # 删除集合中所有记录
WriteResult({ "nRemoved" : }) > db.log.distinct("name"10000) [ ]
查看集合存储信息
> db.log.stats() # 查看数据状态
> db.log.dataSize() # 集合中数据的原始大小
> db.log.totalIndexSize() # 集合中索引数据的原始大小
> db.log.totalSize() # 集合中索引+数据压缩存储之后的大小
> db.log.storageSize() # 集合中数据压缩存储的大小
pretty()使用
> db.log.find({uid:1000}).pretty() { "_id" : ObjectId("5a4c5c0bdf067ab57602f7c2"), "uid" : 1000, "name" : "mongodb", "age" : 6, "date" : ISODate("2018-01-03T04:28:59.343Z") }