MongoDB数据库增删改查基本使用

文章目录

  • MongoDB数据库增删改查基本使用
    • 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.查询当前有多少个数据库

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

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

> db
test

3.3.切换数据库

> use config
switched to db config> db
config

3.4.显示帮助信息

1.显示当前库下可以执行的命令
> help2.显示数据库操作命令
> db.help()

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

> show users

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

> show tables

3.7.删除一个表(集合)

> db.biao.drop()
true

3.8.命令行执行mongo命令

mongo --port 28017 --eval  "show dbs"
echo "show dbs"|mongo --port 28017

4.插入数据

4.1.插入一条数据

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

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

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

1.进入我们要创建数据的库
> use db_data
switched to db db_data2.在user_info表中插入数据
> db.user_info.insert({"name":"jiangxl","ad":"北京市","job":"linux"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaoming","ad":"石家庄市","job":"net"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaolan","ad":"太原市","job":"java"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaozi","ad":"石家庄市","job":"guanggao"})
WriteResult({ "nInserted" : 1 })3.查看表是否创建成功
> show tables
user_info4.查看表中的数据
> db.user_info.find()

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

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

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

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

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

4.2.批量插入多条数据

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

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

> db.book_date.insertMany([{ "name":"nginx", "price":25, "num":100, "status":"N" },{ "name":"ansible", "price":50, "num":200 , "status":"A" },{ "name":"tomcat", "price":100, "num":150, "status":"T" },{ "name":"redis", "price":75, "num":320  , "status":"R" },{ "name":"docker", "price":45, "num":270, "status":"D" }
]);
{"acknowledged" : true,"insertedIds" : [ObjectId("602791d60ae90b3ed52d0247"),ObjectId("602791d60ae90b3ed52d0248"),ObjectId("602791d60ae90b3ed52d0249"),ObjectId("602791d60ae90b3ed52d024a"),ObjectId("602791d60ae90b3ed52d024b")]
}
>
> show tables;
book_date
user_info
>
> db.book_date.find()

4.3.插入嵌套数据

> db.nest_date.insertMany( [
...     { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
...     { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
...     { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
...     { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
...     { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
... ]);
{"acknowledged" : true,"insertedIds" : [ObjectId("60279b0d0ae90b3ed52d0251"),ObjectId("60279b0d0ae90b3ed52d0252"),ObjectId("60279b0d0ae90b3ed52d0253"),ObjectId("60279b0d0ae90b3ed52d0254"),ObjectId("60279b0d0ae90b3ed52d0255")]
}> show tables;
book_date
nest_date
user_info> db.nest_date.find()
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0252"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0253"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
{ "_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的数据

> db.book_date.find({"status":"N"})
{ "_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”

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

navicat查询

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

> db.nest_date.find({
...     "size.uom": "cm",
...     "qty": {
...         $eq: 75
...     }
... })
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }解释:
db.nest_date.find({"size.uom": "cm",            //uom为cm的"qty": {$eq: 75              //qty等于75的}
})

navicat查询

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

> db.book_date.find({$or: [{"status": "T"},{"price": {$lt: 50}}]})
{ "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
{ "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" }
{ "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }解释:
db.book_date.find({ $or: [          //或者{"status": "T"          //staus等于T的},{"price": {$lt: 50               //price小于50的}}]
})

navicat查询

5.5.正则查询表中数据

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

> db.book_date.find({"status":"D",$or: [{"price":{$lt:30}},{"name": /^do/}]})
{ "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }解释:
db.book_date.find({"status": "D",                   //status为D的$or: [{"price": {                      //price小于30的$lt: 30}}, {"name": /^do/             //name以do开头的}]
})

navicat查询

5.6.查询表中第一条数据

> db.book_date.findOne()
{"_id" : ObjectId("602792a80ae90b3ed52d024c"),"name" : "nginx","price" : 25,"num" : 100,"status" : "N"
}

6.更新数据

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

语法格式:

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

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

​ 使用update更新:db.表名.update({“匹配条件1”:"值"1},{set:"更新的字段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.查询要更新的数据
> db.book_date.find({"name":"nginx"})
{ "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }2.更新语句
> db.book_date.updateOne({"name":"nginx"},{$set:{"price":70,"num":230},$currentDate:{"lastModified":true}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }3.查看数据是否更新
> db.book_date.find()
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0256"), "name" : "nginx", "price" : 70, "num" : 230, "status" : "N", "lastModified" : ISODate("2021-02-13T14:14:01.526Z") }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0257"), "name" : "ansible", "price" : 50, "num" : 200, "status" : "A" }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0258"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0259"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d025a"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }

更新语句解释

db.book_date.updateOne({"name": "nginx"                  //要匹配的数据,当数据中name是nginx的数据
}, {$set: {                     //要修改的内容"price": 70,              //price修改为70"num": 230            //num修改为230},$currentDate: {"lastModified": true          //增加一个字段,每次更新都记录时间}
})

6.2.匹配多个条件更新

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

db.book_date.updateOne({"name": "nginx",         //条件1"status":"N"               //条件2
}, {$set: {                     //更新的内容"price": 70,"num": 230,"status":"Nginx"},$currentDate: {"lastModified": true}
})

更新成功

6.3.更新多条数据

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

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

更新成功

6.4.使用update更新一条数据

db.book_date.update({"name": "nginx"
}, {$set: {"price": "70","num": "230","status":"nginx"},$currentDate: {"lastModified": true}
})

7.删除数据

语法格式:

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

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

7.1.删除一条数据

> db.book_date.deleteOne({"name":"nginx"})
{ "acknowledged" : true, "deletedCount" : 1 }

7.2.删除多条数据

> db.book_date.deleteMany({"num":{$lt:500}})
{ "acknowledged" : true, "deletedCount" : 2 }

MongoDB数据库增删改查基本使用相关推荐

  1. MongoDB的增删改查操作

    前面介绍了MongoDB的基本概念与常见的操作,本文来重点分析下MongoDB的增删改查操作 文章目录 什么是"mongo" 新增操作 删除操作 更新操作 查询操作 Where语句 ...

  2. SpringBoot增和MongoDB实现增删改查、复合查询

    SpringBoot增和MongoDB实现增删改查.复合查询 依赖 <dependency><groupId>org.springframework.boot</grou ...

  3. python mongodb_python实现mongodb的增删改查

    python实现mongodb的增删改查 环境: 192.168.122.1 python 192.168.122.11 mongodb 一.安装pip,python的管理工具 官网下载: pip-1 ...

  4. mongodb android,Android编程连接MongoDB及增删改查等基本操作示例

    本文实例讲述了Android编程连接MongoDB及增删改查等基本操作.分享给大家供大家参考,具体如下: MongoDB简介 Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提 ...

  5. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现

    常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...

  6. Mysql (一)Mysql 数据库增删改查

    mysql数据库增删改查增:create database DBname charset gbk; 删:drop database DBname; 改:alter database DBname ch ...

  7. sql增删改查_快速搞定数据库增删改查|附思维导图

    数据库学习,增删改查一直是测试工程师面试笔试的必考知识点,对于常用sql语法我们一定要牢记于心,尤其是各种查询的用法,在面试的时候,一个小小的知识点,面试官都可以推断出求职者的基础是否扎实. 下面是关 ...

  8. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  9. php+mysql+into_PHP+Mysql 如何实现数据库增删改查

    PHP+Mysql实现数据库增删改查的方法:1.创建入口文件[index.html]连接数据库.查询数据:2.点击增加按钮,通过[addnews.html]添加数据:3.点击删除按钮,通过服务端文件[ ...

最新文章

  1. python分数运算使用Fraction模块
  2. 同一个页面生成多个sessionid_web页面渲染(一)
  3. php实现栏目三种类型,WordPress后台edit-tags.php里无限栏目分类实现
  4. 目标检测——YOLO系列算法(YOLOv4、YOLOv5)的学习笔记
  5. 百度悄然发布Deep Vioce 3
  6. 洛谷 P1048 采药 01背包入门
  7. python部署服务器 venv_迁移virtualenv环境
  8. ps切图导出html,ps网页切图-如何用PS切图和输出网页
  9. Android页面引导蒙版(浮层)库
  10. android 获取收到短信验证码,Android自动获取短信验证码
  11. 消除LightGBM训练过程中出现的[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
  12. python远程聊天_Python实现多人在线匿名聊天的小程序
  13. Centos7.x实现Cobbler无人值守安装
  14. 前台获取服务器端的值
  15. python按指定数量划分图片与对应的xml数据(.png格式为列)
  16. Linux IPC:匿名管道 与 命名管道
  17. 连锁不平衡:linkage disequilibrium
  18. SNMP Private Enterprise Number 申请流程
  19. Python实现knn分类算法(Iris 数据集)
  20. 求Sn=a+aa+aaa...+aaaaa的值,比如2+22+222+2222+222222

热门文章

  1. 图书系统(轻松上手)
  2. SocketPro完整使用教程分享,手把手指导
  3. 广告深度学习计算:召回算法和工程协同优化的若干经验
  4. AI技术升级,景联文科技助力扫地机器人行业加快技术迭代,提供数据采集服务
  5. 计算机等额录取,2021研究生复试,这些学校的个别专业采取“等额录取”,过线即可...
  6. 一套模板实现千人千面,衡石助力业财平台分析效率成倍提升
  7. 考研倒计时自律神器计划便签
  8. texstudio系统找不到指定的路径
  9. 4_获取影像像元数据
  10. Pomelo框架总结