MongoDB 入门笔记

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB 简介MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。MongoDB 的安装我用的是 linux,因此可以用以下命令进行安装:

MongoDB 简介
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB 的安装
我用的是 linux,因此可以用以下命令进行安装:

curl -O https://fastdl.mongodb. org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
mv mongodb-linux-x86_64-3.0.6/ /usr/local/MongoDB #也可以不挪
export PATH=/usr/local/MongoDB/bin:$PATH #不挪的话把 /usr/那个路径换到 MongoDB 的存储路径
mkdir -p /data/db # 创建默认数据库文件夹
MongoDB 的使用
开启 MongoDB 服务
cd /usr/local/mongodb/bin
./mongod #开启服务,可以通过 --dbpath 来修改数据库目录
进入 MongoDB Shell
./mongo
它是一个JavaScript shell。你可以在里面进行数据的增删改查。

MongoDB 基础概念
在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。

数据库
一个mongodb中可以建立多个数据库。MongoDB的默认数据库为"db",该数据库存储在data目录中。你可通过 show dbs 查看所有的数据库列表。

文档
文档是一组键值(key-value)对(即BSON)。BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。一个简单的文档,如:

{"site":"www.runoob. com", "name":"菜鸟教程"}
集合
集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。如:

MongoDB 的增删改查
创建数据库
通过 use 命令连接到指定数据库,如 use runoob。有意思的是如果数据库不存在,则创建数据库,否则切换到指定数据库。在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

删除数据库
运行 db.dropDatabase() 删除当前数据库

MongoDB 创建集合
MongoDB 中使用 createCollection() 方法来创建集合。语法格式为:

db.createCollection(name, options)
name 是要创建的集合名称, options 是可选项,包含

capped,布尔值,如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
autoIndexId,布尔,如为 true,自动在 _id 字段创建索引。默认为 false。
size,数值,为固定集合指定一个最大值(以字节计)。可以和 capped 搭配使用。
max,数值,指定固定集合中包含文档的最大数量。
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。如:

db.createCollection("mycol", { capped : true, autoIndexId : true, size :

                              6142800, max : 10000 } )

删除集合
MongoDB 中使用 drop() 方法来删除集合。语法格式为:

db.collection.drop()
use mydb
db.createCollection("mycol")
db.mycol.drop()
插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

db.COLLECTION_NAME.insert(document) # 老版用法
db.collection.insertOne() # 向指定集合中插入一条文档数据
db.collection.insertMany()# 向指定集合中插入多条文档数据
更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

update
update() 方法用于更新已存在的文档。其中 upsert(果不存在update的记录,是否插入objNew)、multi(默认是false,只更新找到的第一条记录)、writeConcern(抛出异常的级别)是可选参数。

db.collection.update(
,
,
{

 upsert: <boolean>,
 multi: <boolean>,
 writeConcern: <document>

}
)
save
save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save(
,
{

 writeConcern: <document>

}
)
删除文档
MongoDB deleteOne() 和 deleteMany() 函数是用来移除集合中的卖QQ数据。语法格式为:

db.inventory.deleteOne({})
查询文档
MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。语法格式为:

db.collection.find(query, projection)
条件操作符
查询嘛,一定会用到大于小于这种,在MongoDB中条件操作符有:

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
检索匹配类型的数据 $type
比如你想查找 col 集合中 like 大于 100 的数据,那么你可以使用

db.col.find({likes : {$gt : 100}})
完成查询。

limit、skip、sort、 方法
这个和mysql 的功能很像。

limit 就是控制从结果中读取的记录条数
skip就是在结果中跳过多少个。
sort() 方法对数据进行排序,使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
db.COLLECTION_NAME.find().limit(NUMBER)
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
db.COLLECTION_NAME.find().sort({KEY:1})
MongoDB 聚合
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。MongoDB中聚合的方法使用aggregate()。语法格式为:

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
其中这个 AGGREGATE_OPERATION 包含 $sum、$avg、$min、$max、$push、$addToSet、$first、$last等。

管道的概念
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。在 MongoDB 中,常用的操作如下:

$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
举个例子:

db.articles.aggregate( [

                    { $match : { score : { $gt : 70, $lte : 90 } } },
                    { $group: { _id: null, count: { $sum: 1 } } }
                   ] );

索引
MongoDB使用 createIndex() 方法来创建索引。语法格式为:

db.collection.createIndex(keys, options)
删除索引用 db.col.dropIndexes()。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
9月前
|
存储 JSON NoSQL
一.MongoDB入门-MongDB介绍和安装
MongoDB入门-MongDB介绍和安装
|
6月前
|
NoSQL MongoDB 索引
开心档-软件开发入门之MongoDB 覆盖索引查询
开心档-软件开发入门之MongoDB 覆盖索引查询
45 0
|
9月前
|
存储 JSON NoSQL
MongoDB入门-MongDB介绍和安装
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
504 1
|
5月前
|
NoSQL 数据可视化 MongoDB
mongoDB从入门到实战最全小白教程
mongoDB从入门到实战最全小白教程
259 0
|
5月前
|
运维 NoSQL MongoDB
[慕课笔记]mongodb入门篇
[慕课笔记]mongodb入门篇
41 1
|
5月前
|
前端开发 JavaScript NoSQL
[慕课笔记] node+mongodb建站攻略
[慕课笔记] node+mongodb建站攻略
25 0
|
6月前
|
NoSQL MongoDB iOS开发
开心档-软件开发入门之MongoDB 覆盖索引查询
开心档-软件开发入门之MongoDB 覆盖索引查询
|
7月前
|
SQL NoSQL MongoDB
MongoDB数据库入门
MongoDB数据库入门实验。
229 0
MongoDB数据库入门
|
8月前
|
存储 JSON NoSQL
python操作MongoDB数据库入门
python操作MongoDB数据库入门
179 0
|
9月前
|
NoSQL 前端开发 JavaScript
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建
121 0