我的编程空间,编程开发者的网络收藏夹
学习永远不晚

NoSQL数据库一MongoDB基本使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

NoSQL数据库一MongoDB基本使用

如今的网站对数据存储要求越来越灵活,在这种需求下 NoSQL 也就是非关系数据库越来越流行。所谓非关系数据库,是指不使用 SQL 语言进行数据操作的数据库的统称。这类数据库存储数据时没有固定的模式,不支持数据表 join 的操作,可以很方便的进行横向扩展。非关系数据库种类很多,其中 MongoDB 和 Redis 应用广泛。

一、MongoDB介绍

MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

二、安装MongoDB

MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。
打开终端,输入以下命令:
sudo apt-get install mongodb
安装完成后,在终端输入以下命令查看MongoDB版本:
mongo -version
输出版本信息,表明安装成功

启动和关闭mongodb命令如下:

service mongodb start
service mongodb stop

默认设置MongoDB是随Ubuntu启动自动启动的。
输入以下命令查看是否启动成功:
pgrep mongo -l #注意:-l是英文字母l,不是阿拉伯数字1

卸载MongoDB
sudo apt-get --purge remove mongodb mongodb-clients mongodb-server

三、使用MongoDB

shell命令模式
输入mongo进入shell命令模式,默认连接的数据库是test数据库,在此之前一定要确保你已经启动了MongoDB,否则会出现错误,启动之后运行成功,如下截图:
NoSQL数据库一MongoDB基本使用
MongoDB 存储的文档记录是一个 BSON 对象,类似于 JSON 对象,由键值对组成。比如一条用户记录:

{
    name: "Aiden",
    age: 30,
    email: "luojin@simplecloud.cn"
}

每一个文档都有一个 id 字段,该字段是主键,用于唯一的确定一条记录。如果往 MongoDB 中插入数据时没有指定 id 字段,那么会自动产生一个 id 字段,该字段的类型是 ObjectId,长度是 12 个字节。在 MongoDB 文档的字段支持字符串,数字,时间戳等类型。一个文档最大可以达到 16M, 可以存储相当多的数据。

常用操作命令:
数据库相关

  • show dbs:显示数据库列表
  • show collections:显示当前数据库中的集合(类似关系数据库中的表table)
  • show users:显示所有用户
  • use yourDB:切换当前数据库至yourDB
  • db.help() :显示数据库操作命令
  • db.yourCollection.help() :显示集合操作命令,yourCollection是集合名

先尝试往 MongoDB 中插入一条数据:

$ mongo
> use shiyanlou
> db.user.insertOne({name: "Aiden", age: 30, email: "luojin@simplecloud.cn", addr: ["CD", "SH"]})
{
        "acknowledged" : true,
        "insertedId" : ObjectId("59a8034064e0acb13483d512")
}
> show databases;
admin      0.000GB
local      0.000GB
shiyanlou  0.000GB
> show collections;
user

可以看到,在插入数据前使用 use 指令,切换到了 shiyanlou 数据库,尽管该数据库暂时不存在,但当我们插入数据后,该数据库就被自动创建了。show databases 和 show collection 分别显示了当前存在的数据库和当前数据库的所有文档集合。而且数据插入后,自动添加了 id 字段。插入多条数据,可以使用 db.collection.insertMany 方法:

> db.user.insertMany([
... {name: "lxttx", age: 28, email: "lxttx@simplecloud.cn", addr: ["BJ", "CD"]},
... {name: "jin", age: 31, email: "jin@simplecloud.cn", addr: ["GZ", "SZ"]},
... {name: "nan", age: 26, email: "nan@simplecloud.cn", addr: ["NJ", "AH"]}
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("59a8034564e0acb13483d513"),
                ObjectId("59a8034564e0acb13483d514"),
                ObjectId("59a8034564e0acb13483d515")
        ]
}

添加的数据其结构是松散的,只要是bson格式均可,列属性均不固定,根据添加的数据为准。先定义数据再插入,就可以一次性插入多条数据,运行完以上例子,库自动创建,这也说明 MongoDB 不需要预先定义 collection ,在第一次插入数据后,collection 会自动的创建。

查询数据可以使用 db.collection.find 方法,可以指定查询过滤条件:

> db.user.find()
{ "_id" : ObjectId("59a8034064e0acb13483d512"), "name" : "Aiden", "age" : 30, "email" : "luojin@simplecloud.cn", "addr" : [ "CD", "SH" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d513"), "name" : "lxttx", "age" : 28, "email" : "lxttx@simplecloud.cn", "addr" : [ "BJ", "CD" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "name" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d515"), "name" : "nan", "age" : 26, "email" : "nan@simplecloud.cn", "addr" : [ "NJ", "AH" ] }

> db.user.find({name: "jin"})
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "name" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }

> db.user.find({age: {$gt: 30}})
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "name" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }

> db.user.find({addr: "CD"})
{ "_id" : ObjectId("59a8034064e0acb13483d512"), "name" : "Aiden", "age" : 30, "email" : "luojin@simplecloud.cn", "addr" : [ "CD", "SH" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d513"), "name" : "lxttx", "age" : 28, "email" : "lxttx@simplecloud.cn", "addr" : [ "BJ", "CD" ] }

上面例子中,我们先通过 db.user.find() 获取到了之前插入的全部数据。接着使用不同的过滤条件进行了查询,其中有一些查询如 {age: {$gt: 30}} 表示查询年龄大于 30 的用户。还可以发现查询数组中是否存在某一元素也非常方便,上面的例子中查询出了所有地址含有 CD 用户。

MongoDB 的查询功能非常强大,可以组合各种查询条件,更多的使用方法可以学习实验楼的其他课程。更新数据主要通过 db.user.updateOne 或者 db.user.updateMany 方法,前者更新一条记录,后者更新多条记录:

> db.user.updateOne(
... {name: "Aiden"},
... {$set: {age: 29, addr: ["CD", "SH", "BJ"]}}
... )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.user.find({name: "Aiden"})
{ "_id" : ObjectId("59a8034064e0acb13483d512"), "name" : "Aiden", "age" : 29, "email" : "luojin@simplecloud.cn", "addr" : [ "CD", "SH", "BJ" ] }

可以看到成功的更新了一条记录。删除数据也非常简单,可以通过 db.user.deleteMany 或db.user.deleteOne 方法:

> db.user.deleteMany({addr: "CD"})
{ "acknowledged" : true, "deletedCount" : 2 }
> db.user.find()
{ "_id" : ObjectId("59a8034564e0acb13483d514"), "user" : "jin", "age" : 31, "email" : "jin@simplecloud.cn", "addr" : [ "GZ", "SZ" ] }
{ "_id" : ObjectId("59a8034564e0acb13483d515"), "user" : "nan", "age" : 26, "email" : "nan@simplecloud.cn", "addr" : [ "NJ", "AH" ] }

上面的命令成功的删除所有地址包含 "CD" 的用户,共删除了两条记录。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

NoSQL数据库一MongoDB基本使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 - 熊泽

业精于勤,荒于嬉;行成于思,毁于随。一、MongoDB服务下载安装(windows环境安装)1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free  , 2.点击On-premises(本地安装),选择MongoDB C
NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 - 熊泽
2017-11-18

基于.net ,使用几种常见的NoSQL数据库

目录 0 .net中的缓存对象 1.MemCached 2.Redis 3.MongoDB 示例完整源码地址2020年1月10日 10:10:10shanzm
基于.net ,使用几种常见的NoSQL数据库
2017-10-10

MongoDB数据库基本概念有哪些

这篇“MongoDB数据库基本概念有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MongoDB数据库基本概念有哪些”文
2023-06-29

如何用Python写一个NoSQL数据库

这篇文章主要介绍“如何用Python写一个NoSQL数据库”,在日常操作中,相信很多人在如何用Python写一个NoSQL数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Python写一个NoSQL
2023-06-15

使用Docker部署MongoDB数据库

要在Docker中部署MongoDB数据库,可以按照以下步骤操作:下载MongoDB镜像:docker pull mongo创建并运行MongoDB容器:docker run -d --name my-mongo -p 27017:2701
使用Docker部署MongoDB数据库
2024-04-25

NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具 - 熊泽

业精于勤,荒于嬉;行成于思,毁于随。 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务这次我们介绍安装  NoSQL Manager for MongoDB 可视化工具进行语句编写可以点击下面几种方式进行工具下载官网下载:
NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具 - 熊泽
2014-06-04

Django数据库(SQlite)基本入门使用教程

目录1:创建工程2:创建blog应用3:数据库操作 4.在blog_demo表中添加数据:总结1:创建工程django-admin startproject mysite创建完成后,工程目录结构如下:manage.py ----- Dj
2022-07-06

编程热搜

目录