侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

MongoDB增删改查基本操作

Wake
2023-03-28 / 0 评论 / 1 点赞 / 853 阅读 / 1,223 字

本文介绍 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()    # 集合中数据压缩存储的大小
1

评论区