当前位置:   article > 正文

MongoDB数据库增删改查基本使用_mongo 删除一条数据

mongo 删除一条数据

目录

1.CRUD介绍

2.MongoDB数据库常用命令

3.MongoDB数据库显示命令

3.1.查询当前有多少个数据库

3.2.显示当前所在的数据库

3.3.切换数据库

3.4.显示帮助信息

3.5.打印当前数据库用户列表

3.6.显示当前所在的数据库表信息

3.7.删除一个表(集合)

3.8.命令行执行mongo命令

4.插入数据

4.1.插入一条数据

4.2.批量插入多条数据

4.3.插入嵌套数据

5.查询数据

5.1.查询book_date表中status包含N的数据

5.2.查询nest_date表中size嵌套uom是cm并且qty小于50的数据

5.3.查询nest_date表中size嵌套uom是cm并且qty等于75的数据

5.4.查询book_date表status等于T或者price小于50的数据

5.5.正则查询表中数据

5.6.查询表中第一条数据

6.更新数据

6.1.更新一条数据

6.2.匹配多个条件更新

6.3.更新多条数据

6.4.使用update更新一条数据

7.删除数据

7.1.删除一条数据

7.2.删除多条数据


1.CRUD介绍

CRUD操作是create(创建)、read(读取)、update(更新)和delete(删除)

MongoDB不支持常规的SQL的命令,但是自身有丰富的查询语言

MongoDB在插入一条数据后,会自动增加一个_id自动,作为主键,如果插入的文档省略了id字段,则会自动生成一个Object_id字段

MongoDB默认有4个数据库:

​ test:登陆时默认存在的库,不切换其他库时默认存在的库

​ admin:系统预留库,MongoDB系统管理库

​ local:本地预留库,存储关键日志

​ config:MongoDB配置信息库

mongo默认登陆的时候是在test库下
mongo不需要提前创建库和表,直接use切换就是创建库,直接插入数据就会创建表
使用use切换到的库,如果没有任何数据,实际上并不会真正创建,是个虚的库,所以show dbs并不会显现,只有在插入数据后,数据库才会真正创建

mongodb插入数字时,不需要使用双引号

2.MongoDB数据库常用命令

命令含义
show databases查看数据库
db显示当前所在数据库
use config切换数据库
help显示帮助信息
db.help()显示数据库帮助信息
show users查看所有用户
show tables查看所有表
db.表名.drop()删除一个表
db.表名.insert()插入一条数据
db.表名.insertMany()插入多条数据
db.表名.find()查询数据
db.表名.updateOne()更新一条数据
db.表名.updateMany()更新多条数据
db.表名.update()更新一条数据
db.表名.deleteOne()删除一条数据
db.表名.deleteMany()删除多条数据

3.MongoDB数据库显示命令

3.1.查询当前有多少个数据库
  1. > show databases
  2. admin 0.000GB
  3. config 0.000GB
  4. local 0.000GB
  5. > show dbs
  6. admin 0.000GB
  7. config 0.000GB
  8. local 0.000GB
3.2.显示当前所在的数据库
  1. > db
  2. test
3.3.切换数据库
  1. > use config
  2. switched to db config
  3. > db
  4. config
3.4.显示帮助信息
  1. 1.显示当前库下可以执行的命令
  2. > help
  3. 2.显示数据库操作命令
  4. > db.help()
3.5.打印当前数据库用户列表
> show users
3.6.显示当前所在的数据库表信息
> show tables
3.7.删除一个表(集合)
  1. > db.biao.drop()
  2. true
3.8.命令行执行mongo命令
  1. mongo --port 28017 --eval "show dbs"
  2. echo "show dbs"|mongo --port 28017

4.插入数据

4.1.插入一条数据

mongodb数据库创建一个表,直接使用use命令进行就创建了,如果里面建了表,在show dbs的时候才能看到,否则没有数据的情况下是看不到的

插入数据时不需要先创建表,在插入数据时会自动将表创建出来

语法格式: db.表名.insert({“字段1”:“值1”,“字段2”:“值2”})

  1. 1.进入我们要创建数据的库
  2. > use db_data
  3. switched to db db_data
  4. 2.在user_info表中插入数据
  5. > db.user_info.insert({"name":"jiangxl","ad":"北京市","job":"linux"})
  6. WriteResult({ "nInserted" : 1 })
  7. > db.user_info.insert({"name":"xiaoming","ad":"石家庄市","job":"net"})
  8. WriteResult({ "nInserted" : 1 })
  9. > db.user_info.insert({"name":"xiaolan","ad":"太原市","job":"java"})
  10. WriteResult({ "nInserted" : 1 })
  11. > db.user_info.insert({"name":"xiaozi","ad":"石家庄市","job":"guanggao"})
  12. WriteResult({ "nInserted" : 1 })
  13. 3.查看表是否创建成功
  14. > show tables
  15. user_info
  16. 4.查看表中的数据
  17. > db.user_info.find()

在这里插入图片描述

表中的数据在插入时会自动生成一个_id字段作为主键,数据格式也是json格式

在user_info表中插入不同字段的数据

  1. > db.user_info.insert({"name":"xiaoqiang","ad":"北京市朝阳区","job":"linux","sex":"boy","xinzi":"10k"})
  2. WriteResult({ "nInserted" : 1 })
  3. > db.user_info.insert({"name":"xiaowu","ad":"北京市东城区","job":"linux","sex":"boy","xinzi":"6k"})
  4. WriteResult({ "nInserted" : 1 })

可以看到,不同的字段只要表名相同都可以插在一个表中,而mysql只能更新表结构才能达到这种效果

应用如果更新涉及到了新增某个表的字段,mongod只需要在下次插入数据时,指定上新字段即可生效

在这里插入图片描述

4.2.批量插入多条数据

语法格式:db.表名.insertMany([{“字段1”:“值1”,“字段2”:“值2”},{“字段1”:“值1”,“字段2”:“值2”}])

使用insertMany插入的数据,会自动生产ObjectId

  1. > db.book_date.insertMany([
  2. { "name":"nginx", "price":25, "num":100, "status":"N" },
  3. { "name":"ansible", "price":50, "num":200 , "status":"A" },
  4. { "name":"tomcat", "price":100, "num":150, "status":"T" },
  5. { "name":"redis", "price":75, "num":320 , "status":"R" },
  6. { "name":"docker", "price":45, "num":270, "status":"D" }
  7. ]);
  8. {
  9. "acknowledged" : true,
  10. "insertedIds" : [
  11. ObjectId("602791d60ae90b3ed52d0247"),
  12. ObjectId("602791d60ae90b3ed52d0248"),
  13. ObjectId("602791d60ae90b3ed52d0249"),
  14. ObjectId("602791d60ae90b3ed52d024a"),
  15. ObjectId("602791d60ae90b3ed52d024b")
  16. ]
  17. }
  18. >
  19. > show tables;
  20. book_date
  21. user_info
  22. >
  23. > db.book_date.find()

4.3.插入嵌套数据
  1. > db.nest_date.insertMany( [
  2. ... { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
  3. ... { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
  4. ... { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
  5. ... { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
  6. ... { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
  7. ... ]);
  8. {
  9. "acknowledged" : true,
  10. "insertedIds" : [
  11. ObjectId("60279b0d0ae90b3ed52d0251"),
  12. ObjectId("60279b0d0ae90b3ed52d0252"),
  13. ObjectId("60279b0d0ae90b3ed52d0253"),
  14. ObjectId("60279b0d0ae90b3ed52d0254"),
  15. ObjectId("60279b0d0ae90b3ed52d0255")
  16. ]
  17. }
  18. > show tables;
  19. book_date
  20. nest_date
  21. user_info
  22. > db.nest_date.find()
  23. { "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
  24. { "_id" : ObjectId("60279b0d0ae90b3ed52d0252"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" }
  25. { "_id" : ObjectId("60279b0d0ae90b3ed52d0253"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
  26. { "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
  27. { "_id" : ObjectId("60279b0d0ae90b3ed52d0255"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }

在这里插入图片描述

5.查询数据

4中插入了一些数据,可以简单的练习查询

可以使用Navicat连接mongodb进行数据查询

find查询默认是and

语法格式:db.表名.find({“条件1”:“值1”,“条件2,”:“值2”})

​ db.表名.find({“条件1”:“值1”,“条件2,”:"{$lt:“值2”}})

或者查询

​ db.表名.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: …"值1"},{"条件2": {lt: 值2}}]})

5.1.查询book_date表中status包含N的数据
  1. > db.book_date.find({"status":"N"})
  2. { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }

navicat查询
在这里插入图片描述

5.2.查询nest_date表中size嵌套uom是cm并且qty小于50的数据

nest_date表中的size字段的数据时嵌套数据,因此在查询字段中嵌套的数据时需要使用"size.uom":“cm”

  1. > db.nest_date.find({"size.uom":"cm","qty":{$lt:50}})
  2. { "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
  3. { "_id" : ObjectId("60279b0d0ae90b3ed52d0255"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
  4. 也可以使用Navicat拆一下显得好看
  5. db.nest_date.find({
  6. "size.uom": "cm", //size等于cm
  7. "qty": {
  8. $lt: 50 //qty小于50
  9. }
  10. })

navicat查询

在这里插入图片描述

5.3.查询nest_date表中size嵌套uom是cm并且qty等于75的数据
  1. > db.nest_date.find({
  2. ... "size.uom": "cm",
  3. ... "qty": {
  4. ... $eq: 75
  5. ... }
  6. ... })
  7. { "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
  8. 解释:
  9. db.nest_date.find({
  10. "size.uom": "cm", //uom为cm的
  11. "qty": {
  12. $eq: 75 //qty等于75
  13. }
  14. })

navicat查询
在这里插入图片描述

5.4.查询book_date表status等于T或者price小于50的数据
  1. > db.book_date.find({$or: [{"status": "T"},{"price": {$lt: 50}}]})
  2. { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
  3. { "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" }
  4. { "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
  5. 解释:
  6. db.book_date.find({
  7. $or: [ //或者
  8. {
  9. "status": "T" //staus等于T的
  10. },
  11. {
  12. "price": {
  13. $lt: 50 //price小于50
  14. }
  15. }
  16. ]
  17. })

navicat查询

在这里插入图片描述

5.5.正则查询表中数据

查询book_date表中status为D并且price小于50和name以do开头两者满足其一的数据

  1. > db.book_date.find({"status":"D",$or: [{"price":{$lt:30}},{"name": /^do/}]})
  2. { "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
  3. 解释:
  4. db.book_date.find({
  5. "status": "D", //status为D的
  6. $or: [{
  7. "price": { //price小于30
  8. $lt: 30
  9. }
  10. }, {
  11. "name": /^do/ //name以do开头的
  12. }]
  13. })

navicat查询

在这里插入图片描述

5.6.查询表中第一条数据
  1. > db.book_date.findOne()
  2. {
  3. "_id" : ObjectId("602792a80ae90b3ed52d024c"),
  4. "name" : "nginx",
  5. "price" : 25,
  6. "num" : 100,
  7. "status" : "N"
  8. }

在这里插入图片描述

6.更新数据

mongodb更新一条数据后,会在最后增加一个新的字段,记录更新的时间

语法格式:

​ 更新一条数据:db.表名.updateOne({“匹配条件1”:"值"1},{s e t : " 更新的字段 1 " : " 新值 1 " , " 更新字段 2 " : " 新值 2 " , set:{"更新的字段1":"新值1","更新字段2":"新值2"},set:"更新的字段1":"新值1","更新字段2":"新值2",currentDate:{“lastModified”:true}})

​ 更新多条数据:db.表名.updateMany({“匹配条件1”:"值"1},{s e t : " 更新的字段 1 " : " 新值 1 " , " 更新字段 2 " : " 新值 2 " , set:{"更新的字段1":"新值1","更新字段2":"新值2"},set:"更新的字段1":"新值1","更新字段2":"新值2",currentDate:{“lastModified”:true}})

​ 使用update更新:db.表名.update({“匹配条件1”:"值"1},{s e t : " 更新的字段 1 " : " 新值 1 " , " 更新字段 2 " : " 新值 2 " , set:{"更新的字段1":"新值1","更新字段2":"新值2"},set:"更新的字段1":"新值1","更新字段2":"新值2",currentDate:{“lastModified”:true}})

​ 更新多条数据:

6.1.更新一条数据

将name等于nginx的数据中的price改为70,num改为230

  1. 1.查询要更新的数据
  2. > db.book_date.find({"name":"nginx"})
  3. { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
  4. 2.更新语句
  5. > db.book_date.updateOne({"name":"nginx"},{$set:{"price":70,"num":230},$currentDate:{"lastModified":true}})
  6. { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
  7. 3.查看数据是否更新
  8. > db.book_date.find()
  9. { "_id" : ObjectId("6027de7f0ae90b3ed52d0256"), "name" : "nginx", "price" : 70, "num" : 230, "status" : "N", "lastModified" : ISODate("2021-02-13T14:14:01.526Z") }
  10. { "_id" : ObjectId("6027de7f0ae90b3ed52d0257"), "name" : "ansible", "price" : 50, "num" : 200, "status" : "A" }
  11. { "_id" : ObjectId("6027de7f0ae90b3ed52d0258"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" }
  12. { "_id" : ObjectId("6027de7f0ae90b3ed52d0259"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" }
  13. { "_id" : ObjectId("6027de7f0ae90b3ed52d025a"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }

在这里插入图片描述

更新语句解释

  1. db.book_date.updateOne({
  2. "name": "nginx" //要匹配的数据,当数据中name是nginx的数据
  3. }, {
  4. $set: { //要修改的内容
  5. "price": 70, //price修改为70
  6. "num": 230 //num修改为230
  7. },
  8. $currentDate: {
  9. "lastModified": true //增加一个字段,每次更新都记录时间
  10. }
  11. })
6.2.匹配多个条件更新

将name等于nginx并且status等于N的数据进行更新,将price修改为70,num修改为230,status修改为Nginx

  1. db.book_date.updateOne({
  2. "name": "nginx", //条件1
  3. "status":"N" //条件2
  4. }, {
  5. $set: { //更新的内容
  6. "price": 70,
  7. "num": 230,
  8. "status":"Nginx"
  9. },
  10. $currentDate: {
  11. "lastModified": true
  12. }
  13. })

更新成功

在这里插入图片描述

6.3.更新多条数据

num小于250的数据,将price修改为99,num修改为530

  1. > db.book_date.updateMany({"num":{$lt:250}},{$set:{"price":"99","num":"530"},$currentDate:{"lastModified":true}})
  2. { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
  3. > db.book_date.find()
  4. { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : "70", "num" : "230", "status" : "Nginx", "lastModified" : ISODate("2021-02-13T11:19:38.473Z") }
  5. { "_id" : ObjectId("602792a80ae90b3ed52d024d"), "name" : "ansible", "price" : "99", "num" : "530", "status" : "A", "lastModified" : ISODate("2021-02-13T11:24:46.045Z") }
  6. { "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : "99", "num" : "530", "status" : "T", "lastModified" : ISODate("2021-02-13T11:23:59.063Z") }
  7. { "_id" : ObjectId("602792a80ae90b3ed52d024f"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" }
  8. { "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
  9. 解释:
  10. db.book_date.updateMany({
  11. "num": {
  12. $lt: 300 //num小于300的全部数据
  13. }
  14. }, {
  15. $set: {
  16. "price": "99", //price更新为99
  17. "num": "530" //num更新为530
  18. },
  19. $currentDate: {
  20. "lastModified": true
  21. }
  22. })

更新成功
在这里插入图片描述

6.4.使用update更新一条数据
  1. db.book_date.update({
  2. "name": "nginx"
  3. }, {
  4. $set: {
  5. "price": "70",
  6. "num": "230",
  7. "status":"nginx"
  8. },
  9. $currentDate: {
  10. "lastModified": true
  11. }
  12. })

在这里插入图片描述

7.删除数据

语法格式:

​ 删除一个:db.表名.deleteOne({“条件1”:“值1”})

​ 删除多个:db.表名.deleteMany({“条件1”:“值1”})

7.1.删除一条数据
  1. > db.book_date.deleteOne({"name":"nginx"})
  2. { "acknowledged" : true, "deletedCount" : 1 }

在这里插入图片描述

7.2.删除多条数据
  1. > db.book_date.deleteMany({"num":{$lt:500}})
  2. { "acknowledged" : true, "deletedCount" : 2 }

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/878446
推荐阅读
相关标签
  

闽ICP备14008679号