MongoDB数据库入门
MongoDB介绍
如果你之前只接触过关系型数据库如 Oracle、Mysql 或 SQL Server,在学习 MongoDB 时可能会感到不安,突然有一款数据库不支持外键,不支持事务,不支持数据类型约定,会给人一种没法用的感觉。
MongoDB 就是这样一款非关系型的数据库,什么叫非关系型?就是把数据直接放进一个大仓库,不标号、不连线、单纯的堆起来。传统数据库由于受到各种关系的累赘,各种数据形式的束缚,难以处理海量数据以及超高并发的业务场景。
为了解决上述问题,必须有一款自废武功,以求在更高层次上突破瓶颈的数据库系统。就像张无忌忘记招式从而学习太极一样,摈弃了固有模式的 MongoDB 才能应对 Facebook 上亿比特的海量数据。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的。
由于关系型数据库存储对数据之间存在高度的关联,在数据量达到上万亿比特时,关系型数据库所特有的约束和关联就会成为性能瓶颈。非关系型数据库采用了另一种思维方式,即不考虑数据之间千丝万缕的联系,存储也不需要固定的模式,这样无需多余的操作就能成倍地扩展数据量。
MongoDB 支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型,比如:
{
title: "流浪地球",
type: "科幻",
by: "吴京"
}
实验楼介绍
实验楼是一家专注于IT技术的在线实训平台,采用创新的“在线实验”学习模式,为学生及在职程序员提供编程、运维、测试、云计算、大数据、数据库等当前主流IT技术实践课程。
MongoDB实验环境访问地址如下:
https://www.shiyanlou.com/courses/12
启动MongoDB
image.png连接MongoDB
image.png显示所有的数据库
image.png进入到对应的数据库
如果该数据库不存在,则自动创建
image.png
使用函数创建一个集合
类似SQL SERVER里面创建一个表格table
image.png
使用函数往集合里面添加记录(文档document)
image.png使用函数查询出集合里面的所有记录(文档document)
image.png根据条件进行查询
类似SELECT * FROM USERS WHERE NAME='张三';
image.png
MongoDB 中,OR 查询语句以 $or 作为关键词,用法如下:
> db.emps.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
同时使用 AND 和 OR, 示例如下:
> db.post.find({
"likes": {$gt:10},
$or: [
{"by": "shiyanlou"},
{"title": "MongoDB Overview"}
]
}).pretty()
比较运算符含义:
gt: 大于 greater than
Lt: 小于 less than
gte: 大于或等于 greater than equal
lte: 小于或等于 less than equal
MongoDB 的模糊查询可以用正则匹配的方式实现:
# 以 'start' 开头的匹配式
{"name":/^start/}
# 以 'tail' 结尾的匹配式
{"name":/tail^/}
更新文档(记录)
语法:db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)
操作实例(将 user_id=2 的文档的 e-mail 改为 group@qq.com):
> db.shiyanlou.update({"user_id":2,"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}})
WriteResult({"nMatched":1,"nUpserted":1,"nModified":1})
> db.shiyanlou.find()
默认的 update 函数只对一个文档更新,如果想作用所有文档,则需要加入 multi:true
操作实例:
db.shiyanlou.update({"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}},{multi:true})
替换已存在的文档(记录)
语法:db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
操作实例(这里的 _id 对应的是要替换文档的 _id):
> db.shiyanlou.save({"_id":ObjectId("53ea174ccb4c62646d9544f4"),"name":"Bob","position":"techer"})
WriteResult({"nMatched":1,"nUpserted":1,"nModified":1})
删除文档
语法:db.COLLECTION_NAME.remove(DELECTION_CRITERIA)
操作实例:
> db.shiyanlou.remove({"name":"Bob"})
WriteResult({"nRemoved":1})
删除集合
语法:db.collection.drop()
删除数据库
语法:db.dropDatabase()
参考资料
官方教程
https://docs.mongodb.com/manual/
ubuntu环境下安装mongodb以及开启远程访问
https://blog.csdn.net/mint_ying/article/details/79476168
Window系统下MongoDB安装及远程访问
https://blog.csdn.net/weixin_37473078/article/details/80236998