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

《MongoDB数据库入门》 image.png

连接MongoDB

《MongoDB数据库入门》 image.png

显示所有的数据库

《MongoDB数据库入门》 image.png

进入到对应的数据库

如果该数据库不存在,则自动创建

《MongoDB数据库入门》 image.png

使用函数创建一个集合

类似SQL SERVER里面创建一个表格table

《MongoDB数据库入门》 image.png

使用函数往集合里面添加记录(文档document)

《MongoDB数据库入门》 image.png

使用函数查询出集合里面的所有记录(文档document)

《MongoDB数据库入门》 image.png

根据条件进行查询

类似SELECT * FROM USERS WHERE NAME=’张三’;

《MongoDB数据库入门》 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

    原文作者:敢想敢测
    原文地址: https://www.jianshu.com/p/aaf58ba96797
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞