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的更多相关文章

  1. 孤荷凌寒自学python第五十五天初识MongoDb数据库

    孤荷凌寒自学python第五十五天第一天初识MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 大家好,2019年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...

  2. MongoDB自学笔记2---1.2 初识MongoDB

    1.2.1MongoDB简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之 ...

  3. 初识Mongodb之[CURD]-PHP版

    行动 在了实践之前,希望大家看一下上面的学习资源,了解一下基本操作. 数据连接初始账号password 账号:admin password:admin 首先我们建立一个文件:mongodb.php,设 ...

  4. 初识 MongoDB,MongoDB 的安装运行

    1.  MongoDB 非关系型数据库  MongoDB是一个基于分布式文件存储的数据库,由C++语言编写.目的是为WEB应用提供扩展的高性能的数据存储解决方案.MongoDB是一个介于关系型数据库和 ...

  5. Mongodb系列:初识Mongodb

    一.背景: 月初进行了期末考试非常荣幸可以參加到了考试系统维护中(详情请阅读:<那些年我们一起參加的活动:15年上半年考试系统维护总结>)!主要负责server维护,在维护期间对Mongo ...

  6. 玩转mongodb(一):初识mongodb

    简介: MongoDB是一个开源的文档数据库,支持高性能.高可用性.自动缩放. 在MongoDB中,一条记录就是一个文档,是由字段和值对构成一个数据结构,类似于JSON对象.字段的值可以包括其他文档. ...

  7. 初识 MongoDB 和 .NET Core 入门

    昨天搭建完毕 MongoDB 集群 后,开始计划了解 MongoDB ,并引入使用场景,这里介绍一下学习过程中的一些笔记,帮助读者快速了解 MongoDB 并使用 C# 对其进行编码. 浅入 Mong ...

  8. MongoDB【第一篇】MongodDB初识

    NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...

  9. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

随机推荐

  1. java web(六)多个请求对应一个Servlet

    概要: 提交请求的常用方式有两种,get/post , 运行程序后被请求,在加载执行web.xml文件时通过该文件中的映射关系找到即将要执行的Servlet; 而在要执行的Servlet文件中可通过反 ...

  2. *HDU1847 博弈

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  3. HDU 2202 计算几何

    最大三角形 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. OUTLOOK 发生错误0x8004010D

    问题:    outlook 2003 在接收邮件时报错: “正在接收”报告了错误(0x8004010D):“在包含您的数据文件的驱动器上,磁盘空间不足.请清空“已删除邮件”文件夹或删除某些文件以释放 ...

  5. SQL——行值表达式(Row Value Expressions)

    概述 最近接触了一个新概念——行值表达式,也叫做行值构造器.这是一个很强大的SQL功能,通常我们所操作的SQL表达式都只能针对一行中的单一字段进行操作比较,而行值表达式可以针对一行中的多个字段进行操作 ...

  6. HDFS NameNode 设计实现解析

    接前文 分布式存储-HDFS 架构解析,我们总体分析了 HDFS 架构的主要构成组件包括:NameNode.DataNode 和 Client.本文首先进一步解析 HDFS NameNode 的设计和 ...

  7. 玩转JavaScript OOP[0]——基础类型

    前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...

  8. MySQL 启动服务报错解决方案

    标签:ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid) 概述 文章 ...

  9. 开源一个练手小App, PrintableCheckList

    A small but powerful App, only focus on one thing, make you easy to print out your checklist. It is ...

  10. C语言 · 2的次幂表示

    问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001. 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 ...