本文介绍 MongoDB 的日常增删改查命令操作。
Mongodb 中关键字种类:
- db(数据库实例级别)
- db 本身
- db.connection 数据库下的集合信息
- db.collection.xxx()
- rs(复制集级别)
- sh(分片级别)
一.查询操作
注意,以下所有操作,都是基于用户认证关闭的配置来进行的,配置如下所示:
[root@mongodb bin]$cat mongodb.conf
#数据存储目录
dbpath=/var/lib/mongodb
#日志文件目录
logpath=/var/log/mongodb/mongodb.log
#后台运行
fork=true
auth=false
bind_ip=127.0.0.1
[root@mongodb bin]$systemctl restart mongod
在客户端指定数据库进行连接:(默认连接本机 test 数据库)
[root@mongodb bin]$mongo
MongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("ddeb2e0f-6ca0-4893-a1a8-ec4614d3986c") }
MongoDB server version: 3.6.8
Server has startup warnings:
2023-03-28T11:26:12.006+0800 I STORAGE [initandlisten]
2023-03-28T11:26:12.006+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2023-03-28T11:26:12.006+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2023-03-28T11:26:12.713+0800 I CONTROL [initandlisten]
2023-03-28T11:26:12.713+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2023-03-28T11:26:12.713+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2023-03-28T11:26:12.713+0800 I CONTROL [initandlisten]
1.查看当前数据库版本
> db.version()
3.6.8
2.切换数据库
> use admin
switched to db admin
3.显示当前数据库
> db
admin
> db.getName()
admin
4.查询所有数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> show databases
admin 0.000GB
config 0.000GB
local 0.000GB
5.查看 admin 数据库当前状态
> use admin
switched to db admin
> db.stats()
{
"db" : "admin",
"collections" : 1,
"views" : 0,
"objects" : 1,
"avgObjSize" : 59,
"dataSize" : 59,
"storageSize" : 16384,
"numExtents" : 0,
"indexes" : 1,
"indexSize" : 16384,
"fsUsedSize" : 13630574592,
"fsTotalSize" : 210031038464,
"ok" : 1
}
6.查看当前数据库的连接机器地址
> db.getMongo()
connection to 127.0.0.1:27017
二.数据管理
1.创建数据库
> use wake
switched to db wake
说明:
当 use 的时候,系统就会自动创建一个数据库。
如果 use 之后没有创建任何集合。系统就会删除这个数据库。
2.删除数据库
> db
wake
> show dbs
admin 0.000GB
config 0.000GB
wake 0.000GB
local 0.000GB
> db.dropDatabase()
{ "dropped" : "wake", "ok" : 1 }
说明:
删除数据库:如果没有选择任何数据库,会删除默认的 test 数据库
3.创建集合
- 方法一
> use wake
switched to db wake
> db.createCollection('a')
{ "ok" : 1 }
> db.createCollection('b')
{ "ok" : 1 }
- 查看当前数据下的所有集合
> show collections
a
b
> db.getCollectionNames()
[ "a", "b" ]
- 方法二
当插入一个文档的时候,一个集合就会自动创建。
> db.c.insert({name:'wake'})
WriteResult({ "nInserted" : 1 })
> db.c.insert({url:'http://wake.wiki'})
WriteResult({ "nInserted" : 1 })
4.查看创建的合集
> db.getCollectionNames()
[ "a", "b", "c" ]
- 查看合集里的内容
> db.c.find()
{ "_id" : ObjectId("5d1c48e5e6a475def02382cc"), "name" : "wake" }
{ "_id" : ObjectId("5d1c48f9e6a475def02382cd"), "url" : "http://wake.net" }
5.重命名集合
> db.c.renameCollection("wake")
{ "ok" : 1 }
> db.getCollectionNames()
[ "a", "b", "wake" ]
6.删除合集
> db.a.drop()
true
> db.getCollectionNames()
[ "b", "wake" ]
7.插入 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条记录
> db.log.findOne() # 查看第1条记录
{
"_id" : ObjectId("5d1c4963e6a475def02382ce"),
"uid" : 0,
"name" : "mongodb",
"age" : 6,
"date" : ISODate("2019-07-03T06:21:23.125Z")
}
> db.log.count() # 查询总的记录数
10000
> db.log.find({uid:1000}) # 查询UUID为1000的数据
{ "_id" : ObjectId("5d1c4963e6a475def02386b6"), "uid" : 1000, "name" : "mongodb", "age" : 6, "date" : ISODate("2019-07-03T06:21:23.529Z") }
删除集合中的记录数
> db.log.distinct("name") # 查询去掉当前集合中某列的重复数据
[ "mongodb" ]
> db.log.remove({}) # 删除集合中所有记录
WriteResult({ "nRemoved" : 10000 })
> db.log.distinct("name")
[ ]
查看集合存储信息
> db.log.stats() # 查看数据状态
> db.log.dataSize() # 集合中数据的原始大小
> db.log.totalIndexSize() # 集合中索引数据的原始大小
> db.log.totalSize() # 集合中索引+数据压缩存储之后的大小
> db.log.storageSize() # 集合中数据压缩存储的大小
评论区