MongoDB学习笔记

简介

MongoDB是一个非常易用的非关系型数据库(NoSQL)以JSON的存储形式将数据存在文档中。其最大的特点就是能应对大数据量、高性能和灵活性需求。

数据结构为: 数据库——集合——文档

数据存在文档中,都是一些JSON数据。每一个文档都是KEY—VALUE 键值对的集合。

为什么要学习这个呢?首先作为一个简单易用的数据库可以给开发带来极大的便利,其次作为一个入门NoSQL数据库的学习很适合,最后就是为后面学习云集成和分布式打基础。

NoSQL

非关系型数据库与关系型数据库最大的区别就是它不用维护“关系”,这就让它相对来说灵活,给了它水平拓展的能力。

我们知道,关系型数据库中是用表来存储数据的,表之间可以存在着关系。

比如:用户表——订单表——商品表    各表利用外键连接起来

如图:通过几个id将表关联起来

而且,传统关系型数据库还要保证没行数据行的数据格式都是一样的,这一点通过SQL命令就能够非常清晰的认识到了

INSERT INTO TABLE A (id, name, info)VALUES(1,‘Kevin’,‘NICE’);

都是要一一对应好数据格式的!

可以这样类比:

NoSQL ------SQL数据库

集合------------表

文档-------------行

而NoSQL数据库就不用管你那么多,它不用维护这些关系,数据可以是不一样的格式,甚至数量都可以不一样。

{
  "_id": ObjectId("5f3c9a8d9d7a7e0b5e000001"),
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "zip": "12345"
  },
  "hobbies": ["reading", "cycling", "hiking"]
}
{
  "_id": ObjectId("5f3c9a8d9d7a7e0b5e000002"),
  "company": "Example Corp",
  "employees": [
    {
      "name": "Jane Smith",
      "position": "Developer",
      "years": 5
    },
    {
      "name": "Bob Johnson",
      "position": "Designer",
      "years": 3
    }
  ],
  "locations": ["New York", "San Francisco", "London"]
}

这样,NoSQL不用SQL语句对数据进行操作,而是使用了内置的语句进行操作。

另外,得益于这种数据存储形式,NoSQL数据库易于实现水平拓展,一个数据库服务器存不下了就再加一个就好了。数据库之间分工合作,假设有1—100个key,那一号数据库存储1-50的key,剩下的二号数据库来存就好。提高吞吐量,这就是分片的力量。

简单入门

MongoDB下载地址

Download MongoDB Community Server | MongoDBDownload MongoDB Community Server non-relational database to take your next big project to a higher level!icon-default.png?t=N7T8https://www.mongodb.com/try/download/community

下载社区版就行了

安装过程中可勾选安装GUI——compass ,可以方便开发。

连接上数据库后,效果如下:

常用命令:

插入数据:db.collection.insertOne({ key1: "value1", key2: "value2"});

查询数据:db.collection.find({key1: "value1"});

更新数据:db.collection.updateOne({key1: "value1"}, { $set: {key2: "new value"} });

删除数据:db.collection.deleteOne({key1: "value1"});

聚合数据:db.collection.aggregate([ { $match: { key1: "value1" } } ]);

创建集合:db.createCollection(name)

创建数据库:use dbname

这里我们试着创建一个数据库(CET_4):

直接就转到了CET_4这个目录下,CET_4已经被创建

但是它目前是空的

查看数据库信息看不到CET_4的存在。

这里其实是因为:use dbname 命令是用来切换到数据库dbname 的。如果数据库dbname已经存在,那么这个命令会切换到该数据库。如果数据库dbname 不存在,MongoDB 会创建一个新的数据库,但只是创建了一个数据库的名称,数据库中实际上还没有数据。

要等有数据存在数据库中,数据库才会真正地被创建。

这里我们创建一个集合后,CET_4这个数据库就真正被创建了

接下来,我们插入一些数据

insertOne插入一条数据

执行后打印出来的值为true,表示操作成功!ObjectId就是插入的这条数据的唯一标识。

插入多条,以数组的形式提供数据即可

若要进行查询,条件要写在大括号中

db.collection.find({key1: "value1"});

另外,MongoDB支持比较操作符,用于查询比较字段

常用的有:

1 等于 $eq

2 不等于$ne

3 大于$gt

4 小于$lt

5 大于等于$gte

6 小于等于$lte

7 匹配值在指定数组中的文档$in

8 匹配满足JavaScripe表达式的字段$where

如果要控制查询结果中返回的字段。可以使用包含字段和排除字段两种方式来进行投影

值为1表示包含,为0表示排除

接着我们可以做一些文档更新和替换的操作

更新单个文档:

替换单个文档:

可以给集合改名:

假设该集合已经过期,需要删除:

键入命令——db.items.renameCollection("outdated_CET_4");

那万一删除错了怎么办?

这里需要我们知道怎么备份,我们可以直接用CompassGUI里面提供的方法导出数据,做一个备份

可以导出为JSON或者CSV,CSV可以方便使用EXCEL查看。

备份的话建议使用JSON文件的形式存储。

我们也可以直接通过导入JSON或者CSV文件的方式直接批量导入数据,很方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值