Mongo DB node学习笔记(三)

Mongo DB

参考:https://www.runoob.com/mongodb/mongodb-tutorial.html

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

关系型数据库和非关系型数据库

表就是关系

或者说表与表之间存在关系

所有的关系型数据库都需要通过 sql 来操作

所有的关系型数据库在操作之前都需要设计结构

  • 而且数据呗还支持约束

    • 唯一的
    • 主键
    • 默认值
    • 非空
  • 非关系型数据库非常灵活

  • 有的非关系型数据库就是key-value对儿

  • MongoDB是长的最像关系型数据库的非关系数据库

    • 数据库-》数据库
    • 数据表-》集合(数组)
    • 标记录-》文档对象
  • MongoDB不需要设计表结构

    下载

    https://pan.baidu.com/s/1M0nBZZe3NaFoW4cmIoxgPQ

    提取:9l3v

检查是否安装成功

在浏览器中输入http://localhost:27017/。会出现:

It looks like you are trying to access MongoDB over HTTP on the native driver port.

表明服务已经启动

使用 启动和关闭数据库

启动

启动cmd

# mongodb 默认使用执行 mongod命令所处盘符根目录下的 /data/db作为自己的数据存储目录
# 所以第一次执行命令 先手动新建目录/data/db
mongod

在d盘构建

在这里插入图片描述

启动

在这里插入图片描述

停止

开启服务控制台 ctrl+c // 直接关闭控制台

连接和推出数据库

命令行

mongo

在这里插入图片描述

退出:

exit

基本命令

  • show dbs
    • 查看数据库列表
    • 只有数据库中有数据才会显示出来
  • db
    • 查看当前操作的数据库
  • use 数据库名称
    • 切换到指定的数据库(如果没有将会新建)
  • 插入数据
    • db.students (创建表/集合)
    • db.students.insertOne({“name”:“jack”})(插入)
    • show collections(查看表/集合)
    • db.students.find()(查询数据)

在node中如何操作数据库

使用官方的mongodb包

使用麻烦

使用第三方mongoose来操作

https://mongoosejs.com/

安装

npm install mongoose

使用

const mongoose = require('mongoose');

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

//创建模型 设计数据库
const Cat = mongoose.model('Cat', { name: String });

//实例化一个对象
const kitty = new Cat({ name: 'Zildjian' });

//持久化保存 kitty
kitty.save().then(() => console.log('meow'));

基本概念

  • 数据库
  • 集合

Mongo 官方指南

设计Scheme发布model

const mongoose = require('mongoose');

//架构
var Schema = mongoose.Schema;

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

//2 设计集合结构(表结构)
//字段名称就是表结构的属性名称
//值
var userSchema = new Schema({
    username:{
        type:String,
        required:true//约束 不能为空
    },
    username:{
        type:String,
        required:true//约束 不能为空
    },
    email:{
        type:String
    }
});

//3 将稳定结构发布为模型
//mongoose.model 将一个架构发布为model
//('User', userSchema) 字符串 接收的架构
const User = mongoose.model('User', userSchema);

//4 当有了模型构造函数后 就可以进行操作了

//4 当有了模型构造函数后 就可以进行操作了
//实例化对象
const admin = new User({
    username:'admin',
    password:'123456',
    email:'admin@qq.com'
})

//持久化
admin.save().then((res) => console.log(res,'meow'));

remove删除

/**删 */
User.remove({ "username": "zs" }).then((res)=>{
    console.log(res,'find1')
})

删除数据库

db.dropDatabase()

更新 修改

findByIdAndUpdate

/**更新 */
User.findByIdAndUpdate('5f339f37fa15820e20cdd856',{
    password:'123'
}).then((res)=>{
    console.log(res,'find1')
})

推荐使用 findOneAndUpdate 可以获取更新后数据

设置 {new:true}

/**更新 */
User.findOneAndUpdate({username:'zs' },{
    password:'1234c'
},{new:true}).then((res)=>{
    console.log(res,'find1')
})

Update 是更新全部

/**查 所有 */
User.find().then((res)=>{
    console.log(res,'find')
})


/**查 条件查询*/
User.find({username:'zs'}).then((res)=>{
    console.log(res,'find')
})

注意

find()是根据条件查询多个 结果是个数组

findOne()是根据条件查询单个 结果是个对象

当findOne()查询的时候 没有条件 则查询到的是第一个

/**查 条件查询*/
User.findOne({username:'zs'}).then((res)=>{
    console.log(res,'find')
})

or查询

User.find({ $or: [{ "username": "zs" }, { "username": "admin" }]}).then((res)=>{
    console.log(res,'find1')
})

Where 语句

在这里插入图片描述

db.col.find({likes : {$lt :200, $gt : 100}})

$type 操作符

用来检索集合中匹配的数据类型

如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({"title" : {$type : 2}})

操作Mysql

https://www.runoob.com/nodejs/nodejs-mysql.html

安装npm install mysql

-1597825594940)]

db.col.find({likes : {$lt :200, $gt : 100}})

$type 操作符

用来检索集合中匹配的数据类型

如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({"title" : {$type : 2}})

操作Mysql

https://www.runoob.com/nodejs/nodejs-mysql.html

安装npm install mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值