MongoDB
安装
windows
- mongodb 64位绿色版 链接: https://pan.baidu.com/s/1lhoXDNTqB48tX0d8RowimQ 提取码: dk5w
- mongodb 32位安装版 链接: https://pan.baidu.com/s/1dfejjDrZnMzXL_NPa6W1fw 提取码: wy6s
- 可视化工具 Robomongo 链接: https://download-test.robomongo.org/windows/robo3t-1.3.1-windows-x86_64-7419c406.zip
mac
- 直接 brew install mongodb 安装时报这个错 Error: mongodb: unknown version :mountain_lion
可以如下操作:
- brew uninstall mongodb
- brew tap mongodb/brew
- brew install mongodb-community
启动与连接
windows(以64位为例)
将mondodb 64位绿色版下载,放到D盘/mongodb(自定义)下
找到mongodb安装目录 D:\mongodb\MongoDB\bin (mongod.exe 服务端、mongo.exe 客户端)
在当前文件夹下打开命令行 输入 mongod(这个代表启动当前的mongod.exe),完整如下:
1
2// ./data 表示数据存在data下
mongod --dbpath=./data命令行最后 waiting for connections on port 27017 证明服务器启动成功
新开一个命令行 (客户端窗口)
1
mongo
连接成功,如下图:
基本概念
- 数据库 MongoDB的单个实例可以容纳多个独立的数据库,比如一个学生管理系统就可以对应一个数据库实例
- 集合 数据库是由集合组成的,一个集合用来表示一个实体,如学生集合
- 文档 集合是由文档组成的,一个文档表示一条记录,比如一位同学张三就是一个文档
基本操作
Mongoose
基本概念
- Mongoose是MongoDB的一个对象模型工具
- 同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法
- 让NodeJS操作Mongodb数据库变得更加灵活简单
- Mongoose因为封装了MongoDB对文档操作的常用方法,可以高效处理mongodb,还提供了类似Schema的功能,如hook、plugin、virtual、populate等机制。
- 官网 mongoosejs
使用mongoose
安装mongoose
1 | npm install mongoose |
使用mongoose
1 | // connection.js |
运行: node connection.js, 连接成功
使用客户端 Robo 3T
新建 连接
Schema
- Schema是数据库集合的模型骨架
- 定义了集合中的字段的名称和类型以及默认值等信息
1 | // 定义schema |
使用schema
1 | let mongoose = require('mongoose'); |
Model
Model是由通过Schema构造而成 除了具有Schema定义的数据库骨架以外,还可以操作数据库 如何通过Schema来创建Model呢,如下:
1 | let mongoose = require('mongoose'); |
通过模型往数据库里面写数据
1 | let mongoose = require('mongoose'); |
Entity简述
- 通过Model创建的实体,它也可以操作数据库
- 使用Model创建Entity,如下示例:
1 | // 一个实体就代表一个文档对象 |
模型是一个总的概念,它代表整个集合,操作对象是整个集合
实体是一个单个的概念,它代表单个文档。只能操作自己
ObjectId
- 存储在mongodb集合中的每个文档都有一个默认的主键_id
- 这个主键名称是固定的,它可以是mongodb支持的任何数据类型,默认是ObjectId 该类型的值由系统自己生成,从某种意义上几乎不会重复
- ObjectId使用12字节的存储空间,是一个由24个16进制数字组成的字符串(每个字节可以存储两个16进制数字)
5d9c8817a62ce21e04dc4e57
1 | let _id = '5d9c8817 a62ce2 1e04 dc4e57'; |
基本操作
1 | let mongoose = require('mongoose'); |
查询
1 | let mongoose = require('mongoose'); |
populate
1 | let mongoose = require('mongoose'); |
mongodb用的非常多,像爱奇艺里面的视频,再次打开,播放记录,也是放到mongodb里面的。
参考资料:http://www.zhufengpeixun.cn/ahead/html/29.mongodb-5.html