上手mongodb (一)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 上手mongodb (一)

上手MongoDB#


MongoDB 是一个跨平台的,面向文档的数据库,如果你了解spring-data-jpa的使用, 那么恭喜你,你已经可以使用mongodb做开发了

使用这种类型的数据库还是挺方便的,最小的存储单位是一个文档,但是文档有什么字段,有多少字段它都不关心,而mysql这样的典型的关系型数据库,开发之前得把表设计的明明白白的,说不定还得预留几个字段以备不时之需,因为后续再改就麻烦了

。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。


体系结构#


MongoDB Mysql
database database
collection 数据表
document 表中的一行记录
index index
$lookup table join
_id primary key
aggregation pipeline group by


一 个MongoDB实例支持多个database并存,同时一个database中可以包含多个collection,所以大家都说它是介于关系数据库和非关系数据库之间,因为它的组成结构真的特别像关系型数据库


支持的数据类型#


数据类型名 BSON
null {"XXX":null}
布尔值: {"XXX":true/false}
int {"XXX":NumberInt("1")}
Long {"XXX":NumberLong("1")}
字符串 {"XXX":"啊哈哈哈"}
日期 {"XXX":new Date()}
正则 {"XXX":null}
布尔值: {"XXX"😕[abc]/}
数组 {"XXX":["a","b","c"]}
文档的嵌套: {"XXX":{"YYY":3}}
对象id {"XXX":objectId()}


聚合类比#


MySQL MongoDB
where $match
group by $group
having $match
select $project
order by $sort
limit $limit
sum $sum
count $sum


注意点:

  • 当我们再在命令行窗口通过命令行进行数据的读写时,如果我们这样写 {"XXX",2}, 它会默认把2处理成浮点类型,而不是整形
  • 每一个文档唯一身份id是 _id , 前面有个下划线


使用命令行进行数据的读写#



点击文档官网


  • 开启本地的mongo服务器(用来保存数据)打开之后,就别关了

默认使用的端口是 27017


mongod -dbpath=指定文件夹当作数据存储路径 --port 端口号


  • 连接数据库(客户端,进行CRUD)


// 在本机直接用下面的命令,模拟连接本机的mongodb
mongo
// 连接远程的mongo
mongo 192.168.88.88


  • 退出


exit


  • 选择数据库

默认选中的数据库是test库


// 如果数据名不存在,默认直接把它创建出来,并且直接选中它使用
user 数据库名


  • 查看当前数据库


db


  • 保存一条数据


入参位置的bson, 注意key的部分是没有双引号的
db.集合名.insert({content:"哈哈,保存了数据"})


  • 查询全部数据, 默认按照_id从小到大排序


db.集合名.find()


  • 返回满足条件的全部数据


入参部分的查询条件 bson同样是json格式
db.集合名.find({id:"123"})


  • 返回满足条件的第一条数据


入参部分的查询条件 bson同样是json格式
db.集合名.findOne({id:"123"})


  • 根据限制的数量, 返回满足条件的数据


入参部分的查询条件 bson同样是json格式
db.集合名.find({id:"123"}).limit(1)


  • 更新文档


db.集合名.update(条件,修改后的数据)
// 下面的这条修改语句存在问题,只会保留name字段
db.集合.update({_id:"1"},{name:"新名字"})
// 保留其他字段的写法 db.集合名.update({条件},{$set:{新的值} })
db.集合.update({_id:"1"},{$set:{name:"新名字"}})


  • 删除文档


db.集合.remove(条件)
// 删除全部
db.集合.remove({})


  • 统计数量


db.spit.count()
db.spit.count({条件})


  • 使用正则实现.模糊查询
    /将被模糊查询的字符串/


db.集合名.find({content:/将被模糊查询的字符串/})
//匹配以XXX开头的文档
db.集合名.find({content:/^XXX/})


  • 大于,小于,不等于


db.集合名.find({"参考的字段":{$gt:value}}) // 查找参考的字段大于value值的文档
$lt 小于
$lte 小于等于   
$gte 大于等于
$ne 不等于


  • 包含和不包含


db.集合名.find({_id:{$in:["1","2","3"]}})
db.集合名.find({_id:{$nin:["1","2","3"]}})


  • 条件连接


$and:[{},{},{}]
// 查询id 大于1000,小于2000的文档
db.集合名.find({$and:[{_id:{$gte:1000}},{_id:{$lte:2000}}]})
$or:[{},{},{}]


  • 实现列值的增长


db.集合名.update({_id:"12"},{$inc:{number:NumberInt(1)}})


  • 按照某个字段排序


db.集合名.find({}).sort(字段:1) // 1是升序
db.集合名.find({}).sort(字段:-1) // -1是降序
// 先按照字段1升序, 如果字段1的值相同,按照字段2降序排序
db.集合名.find({}).sort(字段:1| 字段2:-1)


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
存储 JSON NoSQL
MongoDB 教程
10月更文挑战第9天
35 0
|
6月前
|
存储 NoSQL MongoDB
Mongodb 入门
Mongodb 入门
40 0
|
存储 NoSQL 关系型数据库
MongoDB快速入门 1
MongoDB快速入门
164 1
|
SQL NoSQL MongoDB
MongoDB快速入门 2
MongoDB快速入门
64 1
|
存储 NoSQL MongoDB
06-MongoDB入门
06-MongoDB入门
|
存储 JSON NoSQL
MongoDB从入门到实战之MongoDB快速入门
MongoDB从入门到实战之MongoDB快速入门
314 0
MongoDB从入门到实战之MongoDB快速入门
|
存储 NoSQL JavaScript
mongoDB简单上手
mongoDB简单上手
267 0
mongoDB简单上手
|
JSON 运维 NoSQL
|
存储 NoSQL 安全
MongoDB入门
学习使用
160 0
|
NoSQL Java 数据库连接
上手mongodb (二)
上手mongodb (二)
195 0
下一篇
无影云桌面