09月01, 2020

Mongodb学习

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

MongoDB安装步骤

  1. 以管理运行安装程序,默认安装路径如下:

    C:\Program Files\MongoDB
  2. 配置环境变量,下面是我的安装路径。

    C:\Program Files\MongoDB\Server\3.2\bin

  3. 在c盘根目录。

    3.1、创建一个文件夹 data

    3.2、 在data中创建一个文件夹db

  4. 启动mongodb服务器。

    打开cmd命令行窗口,输入 mongod

注意:32位系统,启动服务器是,需要输入如下内容,只有第一次才用输入,以后启动不用再次输入。

mongod --storageEngine=mmapv1
mongod --dbpath 数据库路径 --port 端口号
  1. 连接mongodb

    打开一个cmd窗口,输入 mongo 连接mongodb,出现 > 表示连接mongodb成功。

设置开机启动

将MongoDB设置为系统服务,可以自动在后台启动,不需要每次都手动启动。

  1. 在c盘根目录创建data:

    ? 在data下创建db和log文件夹。

  2. 创建配置文件:

    ? 在目录 C:\Program Files\MongoDB\Server\3.2 下添加一个配置文件mongod.cfg

  3. 以管理员的身份打开命令行窗口,执行如下的命令。

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

sc.exe create MongoDB binPath= "\"mongod的bin目录\mongod.exe\" --service --config=\"mongo的安装目录\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
  1. 启动mongodb服务

  2. 如果启动失败,证明上边的操作有误:

    在控制台输入 sc delete MongoDB 删除之前配置的服务,然后从第一步再来一次。

基本概念

- 数据库(database)

- 数据库的服务器
    - 服务器用来保存数据
    - mongod 用来启动服务器

- 数据库的客户端
    - 客户端用来操作服务器,对数据进行增删改查的操作
    - mongo 用来启动客户端
    数据库(database)
    集合(collection)
    文档(document)

注意:在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合。

?

基础命令

  1. 显示当前的所有数据库

    show dbs 或者 show databases
  2. 进入到指定的数据库中

    use 数据库名
  3. 当前所处的数据库

    db
  4. 显示数据库中所有的集合

    show collections
  5. 数据库的CRUD(增删改查)的操作

    db.<collection>.insert(doc)
    - 向集合中插入一个文档
    - 例子:向test数据库中的,stus集合中插入一个新的学生对象
    {name:"孙悟空",age:18,gender:"男"}
    db.stus.insert({name:"孙悟空",age:18,gender:"男"})
    
    查询当前集合中的所有的文档:
    db.<collection>.find()
  6. 更过数据库详细操作,请参考官方文档

node目录结构

包(package):将多个模块组合为一个完整的功能,就是一个包

包结构: bin:二进制的可执行文件,一般都是一些工具包中才有lib

js:文件 doc:文档 test:测试代码 package.json:包的描述文件

package.json文件说明:

它是一个json格式的文件,在它里面保存了包各种相关的信息
    name 包名
    version 版本
    dependencies 依赖
    main 包的主要的文件
    bin 运行的代码

npm说明:

 npm(Node Package Manager node的包管理器)
    通过npm可以对node中的包进行上传、下载、搜索等操作
    npm会在安装完node以后,自动安装
npm的常用指令
    npm -v 查看npm的版本
    npm version 查看所有模块的版本
    npm init 初始化项目(创建package.json)
    npm i/install 包名 安装指定的包
    npm i/install 包名 --save 安装指定的包并添加依赖
    npm i/install 包名 -g 全局安装(一般都是一些工具)
    npm i/install 安装当前项目所依赖的包
    npm s/search 包名 搜索包    
    npm r/remove 包名 删除一个包

文件系统

Buffer(缓冲区):Buffer和数组的结构的非常类似,Buffer是用来存储二进制数据的。

Buffer的方法:

  1. Buffer.from(字符串): 将一个字符串中内容保存到一个buffer中

  2. buf.toString():将buffer转换为一个字符串

  3. Buffer.alloc(size):创建一个指定大小的buffer对象

  4. Buffer.allocUnsafe(size):创建一个指定大小的buffer对象,可以包含敏感数据

fs模块

在Node通过fs模块来对系统中的文件进行操作,fs模块是node中已经继承好了,不需要在使用npm下载,直接引入即可。

引入fs:

var fs = require("fs");

fs模块中的大部分操作都提供了两种方法,同步方法和异步方法。

  1. 同步方法带sync

  2. 异步方法没有sync,都需要回调函数

写入文件 ? 1.同步写入 ? 2.异步写入 ? 3.简单写入 ? 4.流式写入

读取文件 ? 1.同步读取 ? 2.异步读取 ? 3.简单读取 ? 4.流式读取

方法

  1. 打开文件

    fs.open(path, flags[, mode], callback)
    fs.openSync(path, flags[, mode])
  2. 读写文件

    fs.write(fd, string[, position[, encoding]], callback)
    fs.writeSync(fd, string[, position[, encoding]])
    
    fs.read(fd, buffer, offset, length, position, callback)
    fs.readSync(fd, buffer, offset, length, position)
  3. 关闭文件

    fs.close(fd,callback)
    fs.closeSync(fd);
  4. 简单文件读取和写入

    fs.writeFile(file, data[, options], callback)
    fs.writeFileSync(file, data[, options])
    
    fs.readFile(path[, options], callback)
    fs.readFileSync(path[, options])
  5. 流式文件读取和写入:

    流式读取和写入适用于一些比较大的文件

    fs.createWriteStream(path[, options])
    fs.createReadStream(path[, options])

更多详细参考资料请参考官方文档

本文链接:https://www.yanxizhu.com/post/MongoDB.html

-- EOF --

Comments