MongoDB 入门笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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
目录
相关文章
|
NoSQL MongoDB 索引
开心档-软件开发入门之MongoDB 覆盖索引查询
开心档-软件开发入门之MongoDB 覆盖索引查询
74 0
|
2月前
|
NoSQL MongoDB
MongoDB入门-sort和投影
这篇文章介绍了MongoDB中的排序(sort)和投影(projection)操作,通过示例代码展示了如何使用这些功能来控制查询结果的排序顺序和返回的字段。
36 3
MongoDB入门-sort和投影
|
2月前
|
NoSQL MongoDB
MongoDB入门-MongoDB的CURD语句练习
这篇文章提供了MongoDB的CURD操作的练习,涵盖了插入、查询、更新和删除数据的基本命令,并通过具体示例展示了如何在MongoDB中执行这些操作。
42 2
|
1月前
|
存储 NoSQL MongoDB
MongoDB入门级别教程全(Windows版,保姆级教程)
一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
66 2
MongoDB入门级别教程全(Windows版,保姆级教程)
|
3月前
|
NoSQL BI 数据处理
【超实用攻略】MongoDB 聚合框架:从入门到精通,带你解锁数据处理新姿势!
【8月更文挑战第24天】MongoDB是一款以其灵活性和高性能闻名的NoSQL数据库。其强大的聚合框架采用管道式处理,允许用户定义多个数据处理阶段如过滤、分组等。本文通过示例数据库`orders`和`products`,演示如何利用聚合框架计算各产品的总销售额。示例代码展示了使用`$lookup`连接两集合、`$unwind`打平数组及`$group`按产品ID分组并计算总销售额的过程。这突显了聚合框架处理复杂查询的强大能力,是进行数据分析和报表生成的理想选择。
51 3
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
76 0
|
6月前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
【5月更文挑战第10天】本文介绍了MongoDB,一个流行的NoSQL数据库,以其灵活的数据模型和高性能著称。内容包括MongoDB的基础知识、安装配置、文档数据模型、数据库操作(如创建、查询、更新和删除)、索引创建、数据备份恢复及性能优化策略。此外,还探讨了MongoDB在社交网络、电子商务等领域的应用。对于初学者,本文提供了从零开始学习MongoDB的入门指导。
106 0
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
|
6月前
|
存储 NoSQL 关系型数据库
【MongoDB系列笔记】索引
索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
53 1
|
6月前
|
存储 NoSQL MongoDB
Mongodb 入门
Mongodb 入门
40 0
|
6月前
|
存储 JSON NoSQL
【MongoDB系列相关笔记】常用命令
本文主要介绍了常见的MongoDB命令操作;结合某个案例需求,将数据库操作,集合操作,文档基本的CURD以及分页查询等命令进行详细说明。
204 0