初识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 是一个介 ...
随机推荐
- CF2.D
D. Santa Claus and a Palindrome time limit per test 2 seconds memory limit per test 256 megabytes in ...
- win7安装oracle 时容易出的问题
Windows7下安装Oracle11G.10G,都会提示如下信息 正在检查操作系统要求... 要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1 检查完成.此次检查的总体结果为: ...
- Zybo GPIO Demo Run Embedded Linux
1.Environment Ubuntu 12.04 x86_64 Vivado 2013.4 SDK 2013.4 2.Pre-requisites 2.1 CodeSourcery arm-g ...
- sql编程篇 (五) 事务
计算机中的事务 编辑 概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用 ...
- 关于phpstrom 的一些实用小技巧与擦件
1.界面中文方框问题 Settings->Appearance中Theme 设置 Windows勾选Override default fonts by (not recommended),设置字 ...
- CSS基础篇之选择符3
border(边框) 如何用CSS调出边框 我们给p标签加一个边框试一下 p{ border:1px solid #ccc:/*这是缩写*/ } 第一个值是为边框的宽度 第二个值是为边框线样式为直线 ...
- Android操作HTTP实现与服务器通信(转)
Android操作HTTP实现与服务器通信 本示例以Servlet为例,演示Android与Servlet的通信. 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方 ...
- SQL Server数据库镜像的页面自动修复原理
SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器,内存中的数据页和磁盘中的数据页保持同步依靠的是数 ...
- ASP.NET跨平台实践:无需安装Mono的Jexus“独立版”
在Linux上运行ASP.NET网站或WebApi的传统步骤是,先安装libgdiplus,再安装mono,然后安装Jexus.在这个过程中,虽然安装Jexus是挺简便的一件事,但是安装mono就相对 ...
- Apache许可协议Open RIA Services
Jeff Handley's进行了多年的项目--基于一份开源许可发布WCF RIA Services.遵循Apache 2许可,捐赠给Outercurve基金会的ASP.NET Open Source ...
