• MongoDB基本操作增删改查


    MongoDB基本操作

    1.MongoDB默认存在的库

    test:登录时默认存在的库

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

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

    config库:MongoDB配置信息库

    2.MongoDB介绍

    CRUD操作试create(创建),read(读取),update(更新)和delete(删除)文档。

    MongoDB不支持多文档事务(MongoDB4.0开始支持ACID)。但是MongoDB确实在一个文档上提供了原子操作。尽管集合中的文档通常都是相同的,但是MongoDB中的集合不需要指定schema。

    MongoDB不支持SQL但是支持主机的丰富的查询语言。

    在MOngoDB中,存储在集合中的每一个文档都需要一个唯一的_id字段,作为主键。如果插入的文档省略了该id字段,则MongoDB驱动程序自动为该字段生成一个Objectld-id。也用于通过更新操作插入的文档upsert:true,如果文档包含一个-id字段,该-id值在集合中必须唯一的,一面重复错键错误。

    在MongoDB中,插入操作针对单个集合。MongoDB中所有写操作都是在单个文档的级别上进行的。

    3.MongoDB数据库常用命令

    help显示帮助
    db.help()显示数据库方法的帮助
    db..help()显示收集方法的帮助,可以是现有的集合或不存在的集合的名称。
    show dbs打印服务器上所有数据库的列表。
    use将当前数据库切换到
    show conllection打印当前数据库的所有集合的列表
    show users打印当前数据库的用户列表
    show roles打印用于当前数据库的用户定义和内置所有角色的列表
    show roles打印当前数据库的用户列表
    show profile打印需要1毫秒或更多的五个最近的操作
    show databases打印所有可用数据库的列表。
    load()执行一个javaScript文件。

    4.MongoDB数据库显示命令

    我们来登录数据库
    [root@localhost mongo_clusetr]# ./mongodb/bin/mongo 192.168.40.2:27017
    登录后模式是在test库查
    
    • 1
    • 2
    • 3

    4.1.查询已经存在的数据库

    > show databases
    admin   0.000GB
    config  0.000GB
    dba     0.000GB
    local   0.000GB
    
    > show dbs
    admin   0.000GB
    config  0.000GB
    dba     0.000GB
    local   0.000GB
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.2.切换数据库

    > db
    dba
    
    > use local
    switched to db local
    
    > db
    local
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.3.查看表信息

    > show tables
    dba
    
    • 1
    • 2

    5.插入数据

    5.1.单行插入数据

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

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

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

    我们执行这个命令之后
    db.dba.insert({"name":"gao","age":20,"ad":"河北"}
    
    使用use命令
    use  dba进入到dba的库中在进行插入数据
    可以手工进行多插入几条
    > db.dba.insert({"name":"w","age":20,"ad":"河北"})
    WriteResult({ "nInserted" : 1 })
    
    使用show命令就可以查看到库了
    > show dbs
    admin   0.000GB
    config  0.000GB
    dba     0.000GB
    local   0.000GB
    
    我们查询插入的情况
    > db.dba.find()
    { "_id" : ObjectId("630c6efef8102a9da15aff48"), "name" : "jiang", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f0bf8102a9da15aff49"), "name" : "chaowei", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f0ff8102a9da15aff4a"), "name" : "wu", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f13f8102a9da15aff4b"), "name" : "gao", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f86f8102a9da15aff4c"), "name" : "w", "age" : 20, "ad" : "河北" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    5.2.插入多行数据命令

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

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

    语法:db.dba_1.insertMany([{}])
    
    db.inventory.insertMany([
    {"name":"zhangsan","age":22,"ad":"henan"},{"name":"lisi","age":22,"ad":"henan"},
    {"name":"wangwu","age":22,"ad":"henan"}
    ])
    
    {
    	"acknowledged" : true,
    	"insertedIds" : [
    		ObjectId("630c85f6f8102a9da15aff52"),
    		ObjectId("630c85f6f8102a9da15aff53"),
    		ObjectId("630c85f6f8102a9da15aff54")
    	]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5.3.查询表内容

    查询单条

    db.dba.find()查询所有单条插入的数据

    > db.dba.find()
    { "_id" : ObjectId("630c6efef8102a9da15aff48"), "name" : "jiang", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f0bf8102a9da15aff49"), "name" : "chaowei", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f0ff8102a9da15aff4a"), "name" : "wu", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f13f8102a9da15aff4b"), "name" : "gao", "age" : 20, "ad" : "河北" }
    { "_id" : ObjectId("630c6f86f8102a9da15aff4c"), "name" : "w", "age" : 20, "ad" : "河北" }
    > 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查询多条插入的数据

    db.inventory.find()查询多条插入的数据

    db.inventory.find()
    { "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 22, "ad" : "henan" }
    
    • 1
    • 2
    • 3
    • 4

    5.4.查询数据进行筛选

    > db.inventory.find()
    { "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
    > 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    我们来通过查询筛选出ad:hebei的数据

    在find中写入对应的字段内容就可以进行筛选
    
    > db.inventory.find({"ad":"hebei"})
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
    > 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.5.条件查询

    这个表示小于$lt:数字

    筛选age字段小于22的数据

    举例:
    > db.inventory.find({"ad":"hebei","age":{$lt:22}})
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
    >
    
    • 1
    • 2
    • 3
    • 4

    6.更新语句update

    6.1.单条更新

    update语法
    db.inventory.updateOne({},#需要筛选的字段
    {$set:{},#需要更新的内容
    $currentDate:{"lastModified":true}#更新之后加上时间
    })
    
    我们先来查询一下这个集合中名叫张的内容
    > db.inventory.find({"name":"zhang"})
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "25"}
    
    下面我们来对他进行修改
    把姓名改成zhangsan123、年龄改成25、同时修改地区
    db.inventory.updateOne(
    {"name":"zhang"},
    {$set:
    {"zhang":"zhang123","age":25,"ad":"河北"},
    $currentDate:{"lastModified":true}
    })
    
    变更后
    > db.inventory.find({"name":"zhang"})
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 25, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:10:30.513Z"), "zhang" : "zhang123" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    6.2.批量更新

    批量更新语法

    db.inventory.updateMany(
    {},#需要筛选的字段
    {$set:
    {},#需要更新的内容
    $currentDate:{"lastModified":true}#更新之后加上时间
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    首先我们查出来,age字段等于22的
    > db.inventory.find({"age":22})
    { "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 22, "ad" : "henan" }
    { "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 22, "ad" : "henan" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    变更语法
    小于23的数字全部改成24然后地区改成河北
    db.inventory.updateMany(
    {"age":{$lt:23}},
    {$set:
    {"age":24,"ad":"河北"},
    $currentDate:{"lastModified":true}
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    变更完成的信息
    > db.inventory.find()
    { "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 24, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:43:44.872Z") }
    { "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 24, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:43:44.872Z") }
    { "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 24, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:43:44.872Z") }
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 25, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:10:30.513Z"), "zhang" : "zhang123" }
    >
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    7.删除命令

    7.1.删除单条数据

    来那这一条数据举例,进行删除操作

    > db.inventory.find({"name":"zhang"})
    { "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 25, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:10:30.513Z"), "zhang" : "zhang123" }
    
    • 1
    • 2

    删除成功

    语法:db.inventory.deleteOne({值1})

    > db.inventory.deleteOne({"name":"zhang"})
    { "acknowledged" : true, "deletedCount" : 1 }
    
    • 1
    • 2

    7.2.删除多条数据

    查询数据

    > db.inventory.find({"age":22})
    { "_id" : ObjectId("630dd858a0e00cb9a35e8cc2"), "name" : "lisi", "age" : 22, "ad" : "河南" }
    { "_id" : ObjectId("630dd85da0e00cb9a35e8cc3"), "name" : "wang", "age" : 22, "ad" : "河南" }
    
    
    • 1
    • 2
    • 3
    • 4

    批量删除

    > db.inventory.deleteMany({"age":22})
    { "acknowledged" : true, "deletedCount" : 2 }
    
    • 1
    • 2
  • 相关阅读:
    C语言实现彩色文字闪烁效果
    5. Longest Palindromic Substring
    进度条——不仅仅是语言层面上的小程序
    【Linux】内核文件系统系统调用流程摸索
    实现CenterNet图像分割算法模型的转换和量化(SDK0301-转ONNX编译)
    Go语学习笔记 - gorm使用 - 原生sql、命名参数、Rows、ToSQL | Web框架Gin(九)
    苹果遭遇安全危机,应用商店曝出不良APP,或影响iPhone的销售
    【计算机网络实验】虚拟局域网组建
    图神经网络驱动的交通预测技术:探索与挑战
    SpringCloud Alibaba之Nacos注册中心学习笔记(包含注册中心以及配置中心)
  • 原文地址:https://blog.csdn.net/qq_46020071/article/details/126609035