初识MongoDB
1. 初识
接触MongoDB,是由于最近在工作中用到了MongoDB做数据存储。之前也听说过这个NoSQL数据库,但是一直没有尝试去使用它做开发。这次趁着这个机会,想好好学习下这个NoSQL数据库。每次听到这个名字,总是想,为什么它的Logo不是一个芒果呢!
2. 简介
MongoDB是一款C++编写的开源的跨平台面向文档数据库,是NoSQL数据库的一种。MongoDB摒弃了传统数据库中基于表的数据结构,采用类似JSON格式的文档结构来存储数据(MongoDB中称这种格式为BSON)。MongoDB最初是由10gen(2013年更名为MongoDB Inc.)公司于2007年开发的,并于2009年开源。
3. 术语
在使用MongoDB前,我们有必要了解下MongoDB中的术语。就像我们使用关系型数据一样,我们得先了解下什么是表(Table),什么是数据库(Schema)。
3.1 Document
是MongoDB中的数据的基本单元,类似于我们熟悉的关系型数据库中"行"的概念。在MongoDB中,Document是一系列有序的键值对的集合。在编程语言中,像Map,Hashtable和Dictionary等数据结构可以和这种存储结构相匹配,比如对于JavaScript而言,它的对象就是以这种格式表示的。
{"greeting" : "Hello, world!"}
3.2 Collection
在MongoDB中,一个Collection是由一组Document组成的。类似的,Document对应于关系数据中的"行"的概念,那么Collection就对应了数据库中"表"的概念。
在Collection中存储的Document,必须包含一个"_id"字段,用于表示纪录的主键,如果Document中没有包含,则MongoDB会自动生成一个。
MongoDB中的Collection具有动态模式的特定,意思就是在一个Collection中包含的Document,可以具有不同的结构。这个和关系型数据库不同,关系型数据中,表中的每一行的格式都是一致的。在MongoDB中,一个Collection可以包含不同格式的Document:
{"greeting" : "Hello, world!"}
{"foo" : 5}
3.3 Database
就像一系列的Document组成了一个Collection,在MongoDB中,一系列的Collection就组成了Database。一个Database具有自己的权限控制,每个Database存储在独立的数据文件中。
4. 使用
4.1 启动MongoDB服务
通过MongoDB提供的"mongod"命令来启动MongoDB
mongod --dbpath mongodb/data/
"--dbpath"选项指定了MongoDB服务的数据存储目录。如果不指定任何参数,则默认的数据存储目录在"/data/db"。当执行命令以后,会输出当前系统的一些信息和MongoDB服务的一些信息,包括服务的端口号:27017 。
4.2 使用mongo shell访问MongoDB服务
mongo shell是一个和MongoDB服务进行交互的客户端, 同时也是一个JavaScript解释器。可以公共mongo shell对MongoDB中的数据进行操作。mongo shell是随MongoDB一起安装的,可以在目录"{MongoDB安装目录}/bin/"下找到"mongo"命令。
启动mongo shell
mongo
如果没有指定任何参数,那么默认将会访问localhost:27017下MongoDB服务。当我们本地起了MongoDB服务以后,就可以直接连接到服务器了:
默认的数据库是"test",我们可以通过变量名"db"查看当前激活的数据库:
通过"use"命令,可以切换数据库
如果完成工作后退出mongo shell,可以输入"exit"命令退出。
通过"help"命令,可以获得mongo shell的帮助信息:
4.3 通过mongo shell进行CRUD操作
这里简单介绍下如何通过mongo shell进行简单的CRUD操作。
假设我们当前在blog数据库中。
4.3.1 insert操作
我们给我们的blog数据库的的"post" Collection下添加一篇文章:
4.3.2 query操作
在上一步中,我们添加了一个Document到Collection "blog"中,现在我们需要查询这篇文章:
4.3.3 update操作
现在,我们需要对这篇blog的内容进行修改:
4.3.4 delete操作
最后,删除我们上面添加的post:
5. 总结
这里,我们只是对MongoDB做了一个简单的认识,至于它的CRUD的各种语法,以及mongo shell的使用,且听下回分解~
初识MongoDB的更多相关文章
- 孤荷凌寒自学python第五十五天初识MongoDb数据库
孤荷凌寒自学python第五十五天第一天初识MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 大家好,2019年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...
- MongoDB自学笔记2---1.2 初识MongoDB
1.2.1MongoDB简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之 ...
- 初识Mongodb之[CURD]-PHP版
行动 在了实践之前,希望大家看一下上面的学习资源,了解一下基本操作. 数据连接初始账号password 账号:admin password:admin 首先我们建立一个文件:mongodb.php,设 ...
- 初识 MongoDB,MongoDB 的安装运行
1. MongoDB 非关系型数据库 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写.目的是为WEB应用提供扩展的高性能的数据存储解决方案.MongoDB是一个介于关系型数据库和 ...
- Mongodb系列:初识Mongodb
一.背景: 月初进行了期末考试非常荣幸可以參加到了考试系统维护中(详情请阅读:<那些年我们一起參加的活动:15年上半年考试系统维护总结>)!主要负责server维护,在维护期间对Mongo ...
- 玩转mongodb(一):初识mongodb
简介: MongoDB是一个开源的文档数据库,支持高性能.高可用性.自动缩放. 在MongoDB中,一条记录就是一个文档,是由字段和值对构成一个数据结构,类似于JSON对象.字段的值可以包括其他文档. ...
- 初识 MongoDB 和 .NET Core 入门
昨天搭建完毕 MongoDB 集群 后,开始计划了解 MongoDB ,并引入使用场景,这里介绍一下学习过程中的一些笔记,帮助读者快速了解 MongoDB 并使用 C# 对其进行编码. 浅入 Mong ...
- MongoDB【第一篇】MongodDB初识
NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
随机推荐
- 喜马拉雅FM抓包之旅
一.概述 最近学院组织安排大面积实习工作,今天刚刚发布了喜马拉雅FM实习生招聘的面试通知.通知要求:公司采用开放式题目的方式进行筛选,申请的同学须完成如下题目 写程序输出喜马拉雅FM上与"卓 ...
- sqlserver sp模板
某公司内部的sp模板 create procedure [usp_my_procedure_name] as begin set nocount on; declare @trancount int; ...
- Android课程---简单的音乐播放器
第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...
- 分分钟用上C#中的委托和事件
每一个初学C#的程序猿,在刚刚碰到委托和事件的概念时,估计都是望而却步,茫然摸不到头脑的.百度一搜,关于概念介绍的文章大把大把的,当然也不乏深入浅出的好文章.可看完这些文章,大多数新手,估计也只是信心 ...
- ASP.NET Core 1.0中的管道-中间件模式
ASP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline).日志记录.用户认证.MVC等模块都以中间件(Middleware)的方式注册在管道中.显而易见这样的设计非常松耦合 ...
- ARM的常数表达式
ARM的常数表达式 如果说Intel指令中的立即数,相信大家都很熟悉.类似的,Arm指令中的“立即数”就是常数表达式.之所以称为常数表达式,而不称为立即数是有原因的. Intel指令属于CISC指 ...
- C#设计模式之观察者
Iron之观察者 引言 上一篇说的职责链模式,很有意思的一个模式,今天这个模式也是很有意思的一个模式,还是不啰嗦了直接进入主题吧. 场景介绍:在上一遍中说到用到部件检测,很巧妙的让调用者和处理者解耦了 ...
- shell日常案例(一)
序 在linux平台下开发,我们经常会接触到一些任务性质的工作,而处理方式多样化.现积累各个案例. 清理近7天的数据 日志文件越来越大,我们需要及时的去做清理工作.配合工具:find, ...
- C语言 · 图形显示
问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * * #include "stdi ...
- 《Entity Framework 6 Recipes》中文翻译系列 (36) ------ 第六章 继承与建模高级应用之TPC继承映射
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-12 TPC继承映射建模 问题 你有两张或多张架构和数据类似的表,你想使用TP ...