MongoDB简单学习、使用。

提示:最近公司需要使用mangodb;于是需要记录下常用的操作。


前言

  • 众所周知、monggoDB是非关系型数据库;那么在进行增加操作时候;表(在这里面称为集合)中字段(这里称为列)的格式就显得不是特别重要了。;
  • 在这里插入图片描述

保存的数据类型

  • Object ID :Documents 自生成的 _id

  • String: 字符串,必须是utf-8

  • Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)

  • Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)

  • Double:浮点数 (没有float类型,所有小数都是Double)

  • Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)

  • Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典

  • Null:空数据类型 , 一个特殊的概念,None Null

  • Timestamp:时间戳

  • Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

增删改查

首先是增加语句

增加一条文档insertOne

db.getCollection('test_data_1').insertOne(
    {
    
    
        "name":8888,
        "address":"changsha"
    }
)

增加多条文档insertMany

db.getCollection('test_data_1').insertMany([
        {
    
    
            "name":"名字1",
        },
        {
    
    
            "name":"名字2",
        },
        {
    
    
            "address":"湖南"
        },
    ]
)

对比两种插入

插入次数考虑:插入次数肯定是insertMany性能更优,**但是:**仅仅是当在插入相同大小的数据时,姓名明显会好;
是否使用分布式的情况:但调用者和数据库不在同一台机器,数据在网络传输的过程中会添加其他的报文;很可能将I/O一下子沾满;且若服务器突然停电,则很不安全;

查找数据

查找所有数据

db.getCollection('test_data_1').find({
    
    })

根据条件查找

db.getCollection('test_data_1').find({
    
    "字段1":"固定值1","字段2":"固定值2"})
 

根据范围查找

  • 首先了解操作符的含义

-在这里插入图片描述

  • 语句demo 查找集合中age字段大于10的文档
db.getCollection('test_data_1').find({
    
    "age":"$gt":10"})

返回限定字段

  • 在限定的{}外面再加上需要显示的字段是否需要的表示 1代表需要,0代表不需要;
  • 默认 id都是会被返回的,如果真的不需要就把id设为0
  • 在这里插入图片描述
db.getCollection('test_data_1').find({
    
    {
    
    "age":"$gt":"10"},{
    
    "age":"1"}}) 

对返回的结果进行加工(返回检索的数据个数、返回限定数量的文档个数、对返回结果得到按设定字段大小排序后的文档)、对返回值进行去重;

对返回值进行去重:这个去重是对返回值去重, 数据库数据并没改变;
返回值是数组

> db.comments.save({
    
    "user": {
    
    "points": 25}}) 
> db.comments.save({
    
    "user": {
    
    "points": 31}}) 
> db.comments.save({
    
    "user": {
    
    "points": 25}}) 
  
> db.comments.distinct("user.points"); 
[ 25, 31 ]




db.getCollection('test_data_1').distinct("name",{
    
    "age":{
    
    "$ne":10}})

在这里插入图片描述
返回年龄不等于10 名字不同的人名

返回检索的数据个数

db.getCollection('集合名字').find({
    
    }).count()

返回限定数量的文档个数

db.getCollection('集合名字').find({
    
    }).limit(num)

对返回结果得到按设定字段大小排序后的文档
1是升序、2是逆序

db.getCollection('集合名字').find({
    
    }).sort{
    
    "字段名":-1或者1}

对数据进行修改(Updata)

修改数据操作需经过查找后才能执行;

updateOne:只更新第一条符合条件的数据
updateMany:更新所有符合条件的数据

db.getCollection('集合名字').updateMany()
//  下面是查询条件
    {
    
     
       "字段名1":"查找条件1","字段名2":"查找条件2"
     },
   // 进行修改
    {
    
    
        "$set":{
    
    "字段名":"新的数据","字段名":"新的数据"}
    } 

若"$set"中字段名以前不存在,则会对该文档进行添加此字段以及赋值

删除数据

删除同样存在两种删除:

deleteOne:删除出现的第一个文档
deleteMany:删除出现的所有文档

db.getCollection("集合名").deleteMany{
    
    
    // 删除的条件
    {
    
    
        "字段名1":"值","字段名2":"值2"
    }
}

可视化数据

我们可以使用Robo3T数据库可视化工具查看数据变化
当分别用insertone插入两组文档时结果如下

文档1{
    
    
    "name":"this is a name",
    "age":12
}

文档2{
    
    
    "name":8888,
    "address":"changsha"
}

我们可以看到,集合中可以插入不同列表类型的数据。

在Robo3T数据库可视化工具中次集合的数据记录如图所示:
在Robo3T数据库可视化工具中次集合的数据记录

本篇总结参考的博客和相关资料很少;如果有有错误还请指正!万分感谢!;也欢迎大家多多交流


猜你喜欢

转载自blog.csdn.net/qq_36737214/article/details/117962174