MongoDB基础

1. 介绍

1.1 什么是MongoDB

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。是NoSQL。

1.2 什么是NoSQL

详细请看:https://www.runoob.com/mongodb/nosql.html

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

1.3 什么是Mongoose

一般我们不直接用MongoDB的函数来操作MongoDB数据库
Mongose就是一套操作MongoDB数据库的接口

2. 准备

MongoDB安装包括两部分,一个是将MongoDB的服务下载下来并且安装到自己电脑;一个是可视化界面

2.1 安装MongoDB

打开官网 https://www.mongodb.com/try/download/community
image.png
下载安装包后,即可打开安装,可以自己设置放置路径
注意:下图一定要取消安装,compass客户端可视化界面我会另外下载。你要是选中了,那就是安装了一天也完成不了
image.png
安装完后,在安装目录的 **data **下需要自己手动创建一个 **db **文件夹
image.png

2.2 测试是否安装成功

进入C:\Program Files\MongoDB\Server\5.0\bin(默认的安装路径),双击mongo.exe,
image.png
用记事本打开mongod.cfg,可以看到,访问端口号是:27017。可以修改,不过修改后需要重启mongo.exe。
image.png
在浏览器访问:http://127.0.0.1:27017 ,出现下面网页,代表成功启动。
image.png
当然这样启动会很麻烦,而且还不好关闭。怎么做呢?
原来的版本需要自己配置,通过dos命令框来实现启动和关闭MongoDB。现在不需要配置,直接以管理员模式运行dos命令框,通过命令启动和关闭。
image.png

2.3 安装可视化工具

官网下载 RoBo 3T(Robomongo is now Robo 3T)
下载地址:https://robomongo.org/download
image.png
下载后安装即可

打开,创建新连接
image.png
连接成功后,在左边的视窗上右键选项来创建数据库,和open shell来进行指令操作。
image.png

3. MongoDB 基础操作

详细请看:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

3.1 插入文档

insert({数据})insertMany([{},{}])
都可以对集合增加文档,相当于给表增添记录
image.png
image.png

3.2 更新文档

update(query, data)
后面还可以跟两个Boolean值

  • upsert:如果不存在要更新的记录是否要插入,默认为 false
    true为插入,false为不插入
  • multi:如果有多条要更新的记录是否全部更新,默认为 false
    true为全部,false为第一个

image.png
其中,$set为修改器,不用则就会整个文档都替换掉,就是说原来Tom哪一项就没有name只有age了,加上,就只更新age

3.3 删除文档

remove(query)
后面还可以加一个Boolean参数:justOne,为 true则只删一条,默认为 false,就是全部删除

3.4 查询文档

find(query)
第二个参数是配置显示字段,_id是默认有的
image.png

3.4.1 AND 条件

db.col.find({key1:value1, key2:value2})
image.png

3.4.2 OR 条件

db.col.find({ $or: [ {key1: value1}, {key2:value2} ] })
image.png

3.4.3 条件操作符

$in, $nin, $and... 请看https://mp.weixin.qq.com/s?__biz=MzI1NDY0MTkzNQ==&mid=2247484284&idx=1&sn=b528df57af8b9c09ae86ac752913b7b9&scene=21#wechat_redirect

操作 格式 范例 RDBMS中的类似语句
等于 {:} db.col.find({"by":"Tom"}) where by = 'Tom'
小于 {:{\(lt:<value>}} | db.col.find({"likes":{\)lt:50}}) where likes < 50
小于或等于 {:{\(lte:<value>}} | db.col.find({"likes":{\)lte:50}}) where likes <= 50
大于 {:{\(gt:<value>}} | db.col.find({"likes":{\)gt:50}}) where likes > 50
大于或等于 {:{\(gte:<value>}} | db.col.find({"likes":{\)gte:50}}) where likes >= 50
不等于 {:{\(ne:<value>}} | db.col.find({"likes":{\)ne:50}}) where likes != 50

image.png

3.4.4 $type 操作符

详细请看:https://www.runoob.com/mongodb/mongodb-operators-type.html

db.test.find({ name: { $type: 'string' } })

3.4.5 limit()、skip()、sort()

limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
db.COLLECTION_NAME.find().limit(NUMBER)
image.png
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
image.png
sort用来实现排序功能
1表示升序,-1表示降序
image.png

4. Mongoose 基础操作

详情请看:参考手册

npm install mongoose

import mongoose from 'mongoose'

// 连接数据库
mongoose.connect('mongodb://localhost:27017/users',  { useUnifiedTopology: true, useNewUrlParser: true })

// Schema定义了集合中文档的结构
const usersSchema = new mongoose.Schema({
  username: String,
  password: String
})

// Model是从Schema编译来的构造函数。Model负责从MongoDB中创建和读取文档
// 调用mongoose.model()时,Mongoose就会编译一个Model
// 
const Users = mongoose.model('users', usersSchema)

// 查询
Users.find({}, {username: 1, _id: 0}, (err, user) => {
  if (err) {
    console.log(err)
    return
  }
  console.log(user)
})
posted @ 2022-03-14 18:34  Liwker  阅读(30)  评论(0编辑  收藏  举报