前面的话

  为了保存网站的用户数据和业务数据,通常需要一个数据库。MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管理数据库的命令和JavaScript语法很像。本文将详细介绍MongoDB数据库

数据库

  数据库,顾名思义,是数据存储的仓库,主要功能有两个

  1、有组织地存放数据

  与在磁盘上自己存放文件不同,数据库替用户组织了数据的存储形式,用户只需要按照数据库提供的接口将数据写入,数据便会按照标准的格式被存储起来

  2、按照不同的需求进行查询

  数据库不仅要能写入数据,还支持数据查询,并且能够按照不同的需求进行查询。因为存储是有组织的,因此查询上可以更规范化,查询速度也会快很多

  不同的数据库的区别就是存放数据的组织不同,同时提供了不同种类的查询。用户可以按照自己的需求,选择合适的数据库

【分类】

  数据库的分类有很多种,按照对SQL语言的支持,可以分为以下两种:

  1、SQL数据库,比如Oracle、Mysql等

  2、NoSQL数据库,比如Redis、MongoDB等

  随着在规模互联网应用的出现,传统的SQL数据库遇到了一些设计上的弊端。比如,SQL对表的定义使应用不够灵活,横向扩展比较困难。与一些特性难以满足相比,反而是SQL数据库的很多特性没有用武之地。比如,在很多场景下,及时存取并不是必要的,也没有特别多的事务需求,而这些额外的特性消耗着SQL数据库的性能

  因此NoSQL数据库应运而生,NoSQL全称是Not Only SQL,意即"不仅仅是SQL"。但事实上,绝大多数NoSQL数据库都放弃了对SQL语言的支持。与SQL关系型数据库相比,NoSQL非关系型数据库大多放弃了一些特性。比如,放弃了实时一致性、对事务的完整支持以及多表查询等。听起来缺点很多,但收益也明显,NoSQL数据库简单便捷、方便扩展,并且有更好的性能

概述

  MongoDB是一个开源的NoSQL数据库,在国内被称为芒果数据库。Linux、Apache、MySQL和PHP组成了非常有名的LAMP架构。现在,有人提议将LAMP中的代表M的MySQL替换为MongoDB

  NoSQL数据库有很多,为什么要选择MongoDB呢?

  MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB使用集合(collection)和文档(document)来描述和存储数据,集合(collection)就相当于表,文档(document)相当于行,字段相当于列,不像MySQL之类的关系型数据库,表结构是固定的,比如某一行由若干列组成,行行都一样,而MongoDB不同,一个集合里的多个文档可以有不同的结构,更灵活一些

  MongoDB有自己很鲜明的特色,总结起来有以下4条

  1、没有表结构的限制

  传统SQL数据库中,对每张表都需要定义表结构。如果有新的存储需求,往往需要添加新的字段,更改表结构。在一些场景下,会显得很不方便,而对于MongoDB,这不再是问题。因为它没有表结构这个概念,在使用一张表之前,不需要对这张表进行任何初始化操作。MongoDB的这种特性对快捷开发和多变的业务需求是很合适的

  2、完全的索引支持

  有些NoSQL数据库,比如redis,它是内存数据库,速度很快。但是,做为键值数据库,只支持一种按键查询的方式。灵活性、使用范围和易用性都受到影响;再比如hbase,写入速度很快。但是,同样查询受限,它只支持单索引,二级索引需要自己实现

  而MongoDB支持单键索引、多键索引、全文索引和地理位置索引。所以MongoDB是功能非常完善的NoSQL数据库,也被称为最接近关系数据库的非关系数据库

  3、良好的数据安全性和方便的规模扩展

  MongoDB使用复制集做多副本存储,以保证数据的安全性。同时,MongoDB内置的分片技术可以很方便地进行数据规模的扩展。分片技术是很新颖的一个特性,它包含了自动数据接口,动态扩容和缩容等一系列在其他数据库中需要大量人工操作的工作,同时提供了对数据库的统一访问入口,不需要在应用层再进行分发,显著减少了人工成本

  4、完善的文档支持和驱动支持

安装

  首先,在官网的下载页面选择合适的MongoDB版本进行下载

  然后,一步一步进行安装即可

  默认情况下,安装到C盘的Program Files文件夹下的MongoDB文件夹中

服务器配置

【搭建服务器】

  搭建服务器,需要进行以下几个步骤

  1、创建data文件夹存储数据库的数据文件;创建log文件夹存储数据库的日志文件;创建bin文件夹存储数据库的可执行文件;创建conf文件夹来存储数据库的配置文件

  2、在windows系统下需要设置环境变量,否则在命令行中会提示mongod命令不可用

  在环境变量的path中,添加mongod.exe文件的目录

  3、接下来,有两种方式启动mongoDB服务,一种如下所示,设置dppath参数值为自定义的目录路径

mongod --dbpath=D:/app/mongo/data

  由下图看出,mongodb的默认端口是27017

  4、另一种是在conf文件夹下新建mongod.conf文件,在这个文件中将设置mongodb启动的配置参数

dbpath = data
logpath = log/mongod.log
mongod -f conf/mongod.conf

  这种方法在命令行工具中没有任何提示,因为记录已经保存到日志文件中,此时mongodb服务已经正常开启

【连接服务器】

  在搭建好mongodb服务器之后,需要使用客户端mongo进行连接,才能进行下一步的操作

  因为是使用mongo连接mongodb服务器,所以需要保证启动mongodb服务器的命令行工具不被关闭,新开一个命令行工具,并输入mongo 127.0.0.1/test,test为数据库的名称

【关闭mongod服务】

  首先切换到admin数据库(use admin),然后使用db.shutdownServer()命令来关闭服务

数据库操作

【默认】

  MongoDB 中默认的数据库为 test,如果没有创建新的数据库,集合将存放在 test 数据库中

【查看】

  使用show dbs来查看数据库

show dbs

【创建/切换】

  使用use命令来切换/创建数据库,会发现创建的数据库并不在数据库的列表中, 要显示它,需要向数据库插入一些数据

use db_name

【显示当前数据库】

  使用db命令来显示当前数据库

db

【将数据写入集合中】

  使用db.集合名.insert(文档)来将文档的数据写入集合中,文档的格式为JSON。而所有存储在集合中的数据都是BSON格式。BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

db.collection_name.insert()

【查看集合】

  上面的插入操作,会自动创建集合db1_coll1,使用show collections命令可以查看当前数据库中的所有集合

【删除数据库】

  这将删除当前所选数据库。 如果没有选择任何数据库,那么它将删除默认的’test‘数据库

db.dropDatabase()

集合操作

  集合类似于SQL数据库中的数据表,标识为collection

【查看集合】

   可以使用命令show collections检查创建的集合

  [注意]也可以使用show tables来查看集合

【创建集合】

  在插入文档时,MongoDB首先检查上限集合capped字段的大小,然后检查max字段

db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )

  name:集合的名字

  capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义

  max:集合中最大条数限制,默认为没有限制

  size:限制集合使用空间的大小,默认为没有限制,size的优先级比max要高

  autoIndexId:是否使用_id作为索引,默认为使用(true或false)

  [注意]向集合中插入文档时,如果集合不存在 ,则会自动创建集合

【删除集合】

  MongoDB 的 db.collection_name.drop() 用于从数据库中删除集合。如果选定的集合成功删除,drop()方法将返回true,否则返回false

数据导入

  在mongoimport的安装目录下,可以使用如下命令导入数据文件

  使用window自带的CMD,使用反斜杠

mongoimport -h 192.168.1.106:27017 -d db1 -c users --file D:\app\vue\imooc\resource\dumall-users

  使用bash工具时,使用正斜杠

  mongoimport的详细命令如下

关闭服务

  如果想关闭mongodb服务,可以使用mongo来实现

mongo 192.168.1.105:
use admin
db.shutdownServer()

  也可以直接使用mongod来实现

mongod --shutdown

MongoDB数据库基础操作的更多相关文章

  1. MongoDB数据库简单操作

    之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数 ...

  2. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  3. C# IV: 数据库基础操作2

    需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...

  4. MongoDB数据库的操作

    一.操作MongoDB数据库 1.创建数据库 语法:ues 注意:如果数据库不存在则再创建数据库,否则切换到指定的 数据库!如果刚刚创建的数据不在列表中,如果需要显示这个数 据库,那么需要在刚刚创建的 ...

  5. CentOS7安装MongoDB及基础操作

    安装环境说明 系统环境说明 [root@master ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@ma ...

  6. MongoDB数据库基础

    MongoDB简介 MongoDB是一种文档型的非关系型数据库(NoSQL),举例如下: {“foo”:,"greeting":"Hello,world!"} ...

  7. MySQL数据库----基础操作

    一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...

  8. mongodb数据库集合操作

    1:更新update update() 方法用于更新已存在的文档.语法格式如下: db.collection.update( <query>, <update>, { upse ...

  9. linux下的mongodb数据库原生操作

    mongodb,是一种结构最像mysql的nosql mysql中的数据库,mongodb中也有,区别在于, myql中数据库下的是表,字段和数据的形式存在 mongodb数据库下的是叫集合(和pyt ...

随机推荐

  1. Java常用类之【八种基本数据类型】

    一.装箱和拆箱 装箱:将基本数据类型包装为对应的包装类对象 拆箱:将包装类对象转换成对应的基本数据类型 JDK5.0中为基本数据类型提供了自动装箱(boxing).拆箱(unboxing)功能 二.八 ...

  2. C语言指针声明探秘

    C语言指针声明探秘

  3. 编写一个简单的Web Server

    编写一个简单的Web Server其实是轻而易举的.如果我们只是想托管一些HTML页面,我们可以这么实现: 在VS2013中创建一个C# 控制台程序 编写一个字符串扩展方法类,主要用于在URL中截取文 ...

  4. python http长连接客户端

    背景: 线上机器,需要过滤access日志,发送给另外一个api 期初是单进程,效率太低,改为多进程发送后,查看日志中偶尔会出现异常错误(忘记截图了...) 总之就是端口不够用了报错 原因: 每一条日 ...

  5. for循环 重点题

    1.冒泡排序  (特别重要): <script type="text/javascript"> var attr=Array(); for(var i=0; i< ...

  6. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  7. 开始学习机器学习,从Ng的视频开始

    时隔开5个月,忙完了考研和毕设后终于有时间搞自己想搞得,研究生导师方向是图像处理与机器学习结合,重新开工 何为机器学习? 对于机器学习(Machine Learning)的定义大体上有两种,第一种是美 ...

  8. document事件及例子

    一.关于鼠标事件:onclick:鼠标单击触发 ondbclick:鼠标双击触发 onmouseover:鼠标移上触发 onmouseout:鼠标离开触发 onmousemove:鼠标移动触发 二.关 ...

  9. 在linux系统下安装redis

    去官网找到合适的版本,可以直接下载下来,再用fxp上传,也可以直接以下面这种方式下载:$ wget http://download.redis.io/releases/redis-3.2.9.tar. ...

  10. 安装gcc提示no acceptable C compiler found in $PATH

    安装gcc提示no acceptable C compiler found in $PATH 从所报错可以看出是缺少了c编译器,因为gcc就是c编译器,所以没有安装gcc就没有c编译器. 之所以报这样 ...