这可能是史上最简单的mongoDB数据库教程了

1 什么是MongoDB?

MongoDB是一个开源的文档数据库和领先的NoSQL(非关系型)数据库。

2 MongoDB是怎么组织、存储数据的?

一个数据库可以包含若干集合,一个集合也就是一张表(就像一个数组),包含了很多文档(也即数据记录,就像一个个对象),每个对象包含了很多字段(对象的键值对)。
数据的组织形式可以简单粗暴的理解成一个多维的对象数组,层级关系和对应的术语如下:
database > collection > document/data records > field(value)

3 使用方法

从安装开始

官网下载:https://www.mongodb.com/download-center/community
下载后将安装目录中mongo.exe所在路径添加到系统环境变量,例如:D:\MongoDB\Server\4.2\bin
打开mongoDB软件,打开cmd直接输入mongo即可运行mongo.exe,会显示当前版本,并连接到mongoDB(或者直接在mongo.exe所在文件夹用命令行输入mongo.exe运行mongoDB)。
此时在命令行可以直接对mongo进行创建、增删改查操作,并可以在mongoDB软件中刷新后看到。

增删改查API

database 级别操作

创建/切换数据库:use dbName
默认会有一个test数据库

查看当前所在所在数据库:db

显示所有数据库:show dbs
刚创建的空数据库是不会显示的,当插入一条记录后方可显示

删除当前所在数据库:db.dropDatabase()
如果当前没有选择数据库,则默认删除test数据库

collection 级别操作

创建collection:db.createCollection(name, options)

显示所有collection:show collections

删除collection:db.COLLECTION_NAME.drop()

过滤某些key:db.COLLECTION_NAME.find({},{KEY:1})
KEY表示要过滤的字段,1表示返回的结果包含这个字段,0表示不包含

document 级别操作

支持的数据类型
  • String Integer Boolean Double Arrays Timestamp Object Null Symbol Date
  • Binary data
  • Regular expression
  • Min/ Max keys - This type is used to compare a value against the lowest and highest BSON elements.
  • Object ID − This datatype is used to store the document’s ID.(_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id,
    3 bytes incrementer))
  • Code − This datatype is used to store JavaScript code into the document.
增删改查

增加一个document(对象):db.COLLECTION_NAME.insert(document)
document可以是一个对象,也可以是一个数组(包含多个对象)
还可以使用save方法,插入的对象不含_id时,save和insert都会自动添加一个_id;含_id时,save会替换已有的含相同_id的对象

查询:db.COLLECTION_NAME.find()
find内的参数可以是

  • {key: value} 按值查询
  • {key: {$lt: value}} 按值的条件查询
  • $lt - less than 小于 ($gt - 大于)
  • $lte - less than equals 小于等于 ($gte - 大于等于)
  • $ne - not equals 不等于
  • $and: [{}, {}] - 同时满足多个条件
  • $or: [{}, {}] - 只需满足一个条件

更新:db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
例如:db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
还可添加第三个参数:,{multi:true}

替换:db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

删除:db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
删除所有:db.mycol.remove({})

指定返回字段Projection:db.COLLECTION_NAME.find({},{KEY:1})
1表示显示,0表示不显示

限制返回结果的数量:db.COLLECTION_NAME.find().limit(NUMBER)
NUMBER表示最多返回的数量,不传返回全部结果

跳过指定结果:.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
如果返回结果有N个,那么跳过第NUMBER个,返回其他的结果;NUMBER默认为0

排序:db.COLLECTION_NAME.find().sort({KEY:1})
根据KEY字段排序,1为升序,-1为降序,默认升序

创建索引:db.COLLECTION_NAME.ensureIndex({KEY:1})
指定索引的字段KEY,以及升序1降序-1;字段可以有多个

聚合操作:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
用来同时处理多个documents
示例:

// 表示以by_user字段值来分组,每遇到一个相同的值,总数sum增加1
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

// 返回结果:
{
   "result" : [
      {
         "_id" : "tutorials point",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1}

其他聚合相关的表达式:

表达式 描述 用法示例
$sum 对指定字段的值求和 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 对指定字段的值求平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 对指定字段的值求最小值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 对指定字段的值求最大值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

4 MongoDB是如何工作的

Replication 副本

Replication是mongoDB的一种数据备份策略:

Replication is the process of synchronizing data across multiple servers.

mongoDB将一份数据复制成几份组成一个副本集,包含一个primary node和多个sedondary node,每个节点的数据保持一致,客户应用程序只对primary进行读写操作。

这可能是史上最简单的mongoDB数据库教程了_第1张图片

Sharding 分片

分片是mongoDB的一种横向数据存储拓展策略:

Sharding is the process of storing data records across multiple machines and it is MongoDB's approach to meeting the demands of data growth.

它由以下三部分组成,工作流程是:router(可以理解为mongoDB实例)作为对客户应用程序开放的接口,将用户请求均匀分配到不同的分片;
一个分片就是一个独立的副本集,用来存储数据,通常一个分片集群对应多个router来分流用户发来的请求;
配置服务器用来存储整个数据集群到每个分片的映射关系,用来指导router如何将用户请求导向特定的分片。一个数据集群包含三个配置服务器。


这可能是史上最简单的mongoDB数据库教程了_第2张图片

参考教程:https://www.tutorialspoint.com/mongodb/mongodb_relationships.htm
MongoDB手册:https://mongodb-documentation.readthedocs.io/en/latest/

你可能感兴趣的:(这可能是史上最简单的mongoDB数据库教程了)