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数据库可视化工具中次集合的数据记录

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值