Web开发|14|MongoDB 入门

MongoDB 安装

参考链接: mongodb installation on Red Hat

如何在 CentOS平台上安装 MongoDB社区版?

step1:创建仓库配置文件 /etc/yum.repos.d/mongodb-org-3.6.repo
step2:安装 mongodb最新稳定版

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
yum  install  -y  mongodb-org

MongoDB如何启动、停止与重启?

service  mongod  start  // 启动mongod服务
chkconfig  mongod  on   // 查看mongod服务是否启动成功

service  mongod  stop   // 停止mongod服务
service  mongod  restart    // 重启mongod服务

如何连接MongoDB服务器?

mongo  --host  127.0.0.1:27017      // 27017是MongoDB的默认端口

在 CentOS上如何卸载 MongoDB?

service  mongod  stop   // 停止mongod服务
yum  erase  $(rpm  -qa  |  grep  mongodb-org)

rm  -r  /var/lib/mongo  // 删除mongodb数据
rm  -r  /var/log/mongodb    // 删除mongodb日志

MongoDB 简介

参考资源: Introduction to MongoDB
MongoDB有哪些特点?什么是BSON?什么是无模式、分片、副本集、索引?

MongoDB 是一个开源的文档数据库,特点是高性能、高可用、自动定标。

什么是文档数据库?

一个文档,即是MongoDB中的一条记录。文档是一种键值对形式的数据结构,类似于JSON对象。文档中键值对的值,可以是数组等常见的数据类型,还可以是另一个文档,或者是由文档组成的数组。

{
  name: "sue",
  age: 26,
  status: 0,
  groups: [ "news", "sports"]
}

文档数据库有哪些优势?

更接近大多数编程语言所常用的数据类型,减少了数据联合所带来的性能开销,动态的schema支持流畅的多态性。

MongoDB的核心特性有哪些?

  1. 高性能
  2. 丰富的Query语句
  3. 高可用性
  4. 支持水平扩展
  5. 支持多种数据存储引擎

MongoDB数据库、集合、文档之间有着怎样的关系?
Databases and Collections 详解
Documents 详解

MongoDB存储的是 BSON文档,每个文档即为一条数据记录,记录存储在集合中,集合存储在数据库中。

《Web开发|14|MongoDB 入门》 MongoDB数据库.png

BSON Types 数据类型

BSON Types 数据类型
什么是 BSON Types 数据类型?有哪些常用的数据类型?

什么是 ObjectId ?有什么用?

在MongoDB中,集合中的每一个文档都要求有一个 _id 字段,这个 _id 扮演着“主键”的角色,它的数据类型是 ObjectId 。当向集合中插入文档时,如果省略了 _id 这个字段,MongoDB会自动地为该文档创建一个 _id 。

new ObjectId();  // ObjectId类型
Date类型

new Date();
Date();
NumberLong类型
NumberInt类型
NumberDecimal类型

NumberLong("2090845886852");
db.collection.insertOne( { _id:10, calc: NumberLong("20124523645") } );

如何进行字段的类型判断?

instanceof 关键字
mydoc._id  instanceof  ObjectId;

typeof 关键字
typeof  mydoc._id;

使用 mongo Shell

  1. mongo Shell 官网手册(常用)
  2. mongo shell 简介
  3. 如何配置自定义的 mongo命令?
  4. 如何更好地使用 mongo帮助文档?
  5. 如何在mongo中执行JavaScript脚本?

如何使用帮助文档?有哪些键盘快捷键可以使用?文档的增删改查?条件查询?分页查询?排序?统计?

什么是 mongo Shell ?

mongo Shell 是一个用于与MongoDB服务器进行交互的javascript接口。使用它可以对MongoDB中的数据进行各种操作。

如何启动 mongo Shell ?

./bin/mongo // 启动 mongo Shell

如何连接MongoDB服务器?

mongo  --help    // 查看帮助文档

1、使用mongo命令连接服务器
mongo  --host  localhost:27017
mongo  --host  127.0.0.1:27017      // 连接mongodb 服务器

2、使用 Mongo()构造器创建连接
conn = new Mongo("host:port");
db = conn.getDB("dbname");
cursor = db.collection.find();
while ( cursor.hasNext() ) {
  printjson( cursor.next() );
}

如何退出mongo Shell?

quit()  // 退出 mongo Shell

或者使用 Ctrl + C 退出mongo Shell

如何在mongo中执行 js脚本?

mongo  text  --eval  "printjson( db.getCollectionNames() )"
mongo  localhost:27017/test  myjsfile.js
load( "/data/db/scripts/myjsfile.js" )

如何灵活地使用mongo帮助文档?

help    // 查看帮助文档
db.help()   // 查看数据库help
db.collection.help()    // 查看集合的help
db.collection.find().help()   // 查看指针的help
help  misc

mongo如何使用?CRUD操作?

help    // 查看帮助文档
show  dbs       // 查看数据库列表
use  dbname // 选中并进入一个数据库
db  // 查看当前正在使用的数据库

show  collections;         // 查看集合列表

db.users.insert({"name":"geek"});   // 创建新的集合 users。MongoDB的集合,直到向其中插入了数据时才会真正被创建。

db.users.find()      // 查看当前集合中所有的数据, _id是mongodb文档中默认的“主键”字段。
db.users.find().count();     // 查询集合中数据的条数
db.users.find({"_id":ObjectId("23039jbsllkklkdskdldsld")});    // 以_id为查询条件的查询 

db.users.update({"name":"lucy"}, {$set:{"group":"writer"}});    // 更新一条数据
db.users.update({"name":"lucy"}, {$set:{"group":"writer"}}, {multi:true});   // 更新所有满足条件的数据。
db.users.save({"_id":ObjectId("ipiwoeiwoeoiwe"), "group":"reporter"});    // 覆盖式更新,重点区分update()和save()异同。

db.users.remove({"group":"writer});    删除所有满足条件的数据
db.users.remove({"group":"writer},true);  删除第一条满足条件的数据。
db.users.remove({});   删除集合中的所有数据,即数据清零。
db.users.drop();     彻底删除(删除数据,并删除集合的索引)

使用 mongoose

mongoose模块,用于在node程序中使用mongoose操作MongoDB数据库。

  1. MongoDB是无模式的数据库。
  2. 安装mongoose : npm install mongoose
  3. 连接mongodb服务器
  4. Schema,创建Schema数据结构。
  5. Model,创建Model数据模型。

mongoose中还有哪些高阶功能?

  1. mongoose模式的扩展
    (1)为文档属性指定数据类型和默认值
    (2) 修饰符:setter修改符,当数据存入数据库之前对数据进行处理。getter修改符,当数据从数据库中取出后对数据进行处理。
    (3)虚拟属性
    (4)索引、辅助索引
  2. mongoose模型的方法
    (1)静态方法
    (2)实例方法
    (3)自定义方法
  3. mongoose的数据校验
    (1)预定义的验证器
    (2)自定义验证器 validate
  4. 使用mongoose中间件
    (1)文档中间件:在执行文档数据初始化、验证、保存或删除的过程中执行。
    (2)查询中间件:在文档数据的增删改查的过程中执行。
    (3)预处理中间件:在文档数据执行操作之前执行。
    (4)后置处理中间件:在文档数据执行操作之后执行。
    中间件存在的意义:即在某些操作之前或之后执行用户自定义的操作。这些自定义操作即为中间件,next()是核心。
  5. DBRef多集合操作
    作用:实现多个不同集合之间的交叉引用。
    (1)ref属性
    (2)populate()方法

完!!!

    原文作者:夏海峰
    原文地址: https://www.jianshu.com/p/fb0ce925d2f0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞