Mongodb 以及 node.js中使用mongoose操作数据库

这篇具有很好参考价值的文章主要介绍了Mongodb 以及 node.js中使用mongoose操作数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、lowdb

2、Mongodb是什么?

3、Mongodb核心概念

4、Mongodb的下载与使用

5、数据库与集合命令

5.1、数据库命令

5.2、集合命令

5.3、文档命令

6、Mongoose

6.1、插入文档

6.2、字段类型

6.3、字段值验证

6.3.1、必填项

6.3.2、默认值

6.3.3、枚举值

6.3.4、唯一值

6.4、删除文档

6.5、更新文档

6.6、查询文档

6.7、条件控制

6.7.1、运算符

6.7.2、逻辑运算

6.7.3、正则匹配

6.8、mongoose个性化读取

6.7.1、字段筛选

6.7.2、数据排序

6.7.3、数据截取

7、mongodb图形化管理工具

7.1、robo3t

7.2、Navicat


1、lowdb

一个简陋的数据库第三方库,使用JSON文件来保存数据,进行增删改查。

在没有数据库或者数据量小到不使用数据库的时候可以使用,了解即可。

2、Mongodb是什么?

MongoDB是一个基于分布式文件存储的数据库。

相比于纯文件管理数据,数据库管理数据有如下的特点:

  • 速度更快
  • 扩展性更强
  • 安全性更强

为什么选择Mongodb,因为它的操作语法与JS类似,容易上手,学习成本低。

3、Mongodb核心概念

  • 数据库(database)数据库就是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合。
  • 集合(collecttion)集合类似于JS中的数组,在集合中可以存放很多文档。
  • 文档(document)文档是数据库中的最小单位,类似JS中的对象。

4、Mongodb的下载与使用

下载地址:Download MongoDB Community Server | MongoDB

建议选择zip类型,通用性更强。

配置步骤如下:

  • 将压缩包移动到C:\Program Files下,然后解压
  • 创建C:\data\db目录,mongodb会将数据存在这里
  • 以mongodb中的bin目录作为工作目录,启动命令行。
  • 运行mongod.exe

看到waiting for connections就表明服务启动成功。

客户端程序

  • 运行mongo.exe

注意:

  • 为了后续方便使用mongod命令,可以将bin目录配置到环境变量path中
  • 千万不要选中服务端窗口的内容,选中会停止服务,可以敲回车取消选中

5、数据库与集合命令

5.1、数据库命令

  • 1、显示所有数据库
    • show dbs
  • 2、切换到指定数据库
    • use 数据库名
  • 3、显示当前所在的数据库
    • db
  • 4、删除当前数据库
    • use 库名
    • db.dropDatabase()

5.2、集合命令

  • 1、创建集合
    • db.createCollection('集合名称')
  • 2、显示当前数据库中的所有集合
    • show collections
  • 3、删除某个集合
    • db.集合名.drop()
  • 4、重命名集合
    • db.集合名.renameCollection('newName')

5.3、文档命令

  • 1、插入文档
    • db.集合名.insert(文档对象)
  • 2、查询文档
    • db.集合名.find({age: 20}) // 找年龄是20的文档,find不传参数,查询全部文档
  • 3、更新文档
    • db.集合名.update(查询条件,新的文档) // 不用$set,会替换掉整个文档
    • db.集合名.update({name: '张三'}, {$set:{age:19}}) // 如果用$set,只修改age
  • 4、删除文档
    • db.集合名.remove(查询条件)

6、Mongoose

Mongoose是一个对象文档模型库。

方便我们使用代码去操作mongodb数据库。

npm i mongoose@6
// 导入mongoose
const mongoose = require('mongoose');

// 连接mongoose服务
mongoose.connect('mongodb://127.0.0.1:27017/bilibili'); // 如果bilibili数据库不存在会自动创建

// 设置回调
mongoose.connection.on('open', () => {
    console.log('连接成功');
}); // 连接成功回调
mongoose.connection.on('error', () => {
    console.log('连接失败');
}); // 连接失败回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
}); // 连接关闭回调

// 关闭mongodb的连接
setTimeout(() => {
    mongoose.disconnect();
}, 3000);

6.1、插入文档

// 导入mongoose
const mongoose = require('mongoose');

// 连接mongoose服务
mongoose.connect('mongodb://127.0.0.1:27017/bilibili'); // 如果bilibili数据库不存在会自动创建

// 设置回调
mongoose.connection.on('open', () => {
    // 创建文档的结构对象,设置集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({
        name: String,
        author: String,
        price: Number
    });

    // 创建模型对象,对文档操作的封装对象
    let BookModel = mongoose.model('book', BookSchema);

    // 新增
    // BookModel.create({
    //     name: '西游记',
    //     author: '吴承恩',
    //     price: 19.9
    // }, (err,data) => {
    //     if (err) {
    //         console.log(err);
    //         return;
    //     }
    //     // 如果没出错,则输出插入后的文档对象
    //     console.log(data);
    // });

    // 新增多条
    BookModel.insertMany([{
        name: '西游记',
        author: '吴承恩',
        price: 19.9
    },{
        name: '西游记',
        author: '吴承恩',
        price: 19.9
    },{
        name: '西游记',
        author: '吴承恩',
        price: 19.9
    }], (err,data) => {
        if (err) {
            console.log(err);
            return;
        }
        // 如果没出错,则输出插入后的文档对象
        console.log(data);
    });
}); // 连接成功回调
mongoose.connection.on('error', () => {
    console.log('连接失败');
}); // 连接失败回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
}); // 连接关闭回调

6.2、字段类型

String:字符串

Number:数字

Boolean:布尔值

Array:数组

Date:日期

Buffer:Buffer对象

Mixed:任意类型,需要使用mongoose.Schema.Types.Mixed指定

ObjectId:对象ID,需要使用mongoose.Schema.Types.ObjectId指定

Decimal128:高精度数字,需要使用mongoose.Schema.Types.Decimal128指定

6.3、字段值验证

6.3.1、必填项
title: {
  type: String,
  required: true
}
6.3.2、默认值
author: {
  type: String,
  default: '匿名'
}
6.3.3、枚举值
sex: {
  type: String,
  enum: ['男', '女']
}
6.3.4、唯一值
username: {
  type: String,
  unique: true,
}

unique需要重建集合才有效果。永远不要相信用户的输入。

6.4、删除文档

// 导入mongoose
const mongoose = require('mongoose');

// 连接mongoose服务
mongoose.connect('mongodb://127.0.0.1:27017/bilibili'); // 如果bilibili数据库不存在会自动创建

// 设置回调
mongoose.connection.on('open', () => {
    // 创建文档的结构对象,设置集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({
        name: String,
        author: String,
        price: Number
    });

    // 创建模型对象,对文档操作的封装对象
    let BookModel = mongoose.model('book', BookSchema);

    // 删除一条
    BookModel.deleteOne({_id: '6461be48670777b4e3f2bfcc'}, (err, data) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(data);
    });
    // 批量删除
    BookModel.deleteMany({is_hot: false}, (err, data) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(data);
    });

}); // 连接成功回调
mongoose.connection.on('error', () => {
    console.log('连接失败');
}); // 连接失败回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
}); // 连接关闭回调

6.5、更新文档

// 导入mongoose
const mongoose = require('mongoose');

// 连接mongoose服务
mongoose.connect('mongodb://127.0.0.1:27017/bilibili'); // 如果bilibili数据库不存在会自动创建

// 设置回调
mongoose.connection.on('open', () => {
    // 创建文档的结构对象,设置集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({
        name: String,
        author: String,
        price: Number
    });

    // 创建模型对象,对文档操作的封装对象
    let BookModel = mongoose.model('book', BookSchema);

    // 更新一条
    // BookModel.updateOne({name: '西游记'}, {price: 9.9}, (err,data) => {
    //     // 判断err
    //     if (err) {
    //         console.log('更新失败');
    //         return;
    //     }
    //     console.log(data);
    // });

    // 批量更新
    BookModel.updateMany({name: '西游记'}, {price: 9.9}, (err,data) => {
        // 判断err
        if (err) {
            console.log('更新失败');
            return;
        }
        console.log(data);
    });

}); // 连接成功回调
mongoose.connection.on('error', () => {
    console.log('连接失败');
}); // 连接失败回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
}); // 连接关闭回调

6.6、查询文档

// 导入mongoose
const mongoose = require('mongoose');

// 连接mongoose服务
mongoose.connect('mongodb://127.0.0.1:27017/bilibili'); // 如果bilibili数据库不存在会自动创建

// 设置回调
mongoose.connection.on('open', () => {
    // 创建文档的结构对象,设置集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({
        name: String,
        author: String,
        price: Number
    });

    // 创建模型对象,对文档操作的封装对象
    let BookModel = mongoose.model('book', BookSchema);

    // 查询单条
    BookModel.findOne({name: '西游记'}, (err, data) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(data);
    });

    // 根据ID获取文档
    BookModel.findById('6461c222f73d78ca0b9fd980', (err, data) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(data);
    });

    // 批量获取(有条件)
    BookModel.find({author: '吴承恩'}, (err, data) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(data);
    });

    // 无条件,读取所有
    BookModel.find((err, data) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(data);
    });

}); // 连接成功回调
mongoose.connection.on('error', () => {
    console.log('连接失败');
}); // 连接失败回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
}); // 连接关闭回调

6.7、条件控制

6.7.1、运算符

在mongodb中,不能用><等运算符,要使用替代符号:

  • >,$gt
  • <,$lt
  • >=,$gte
  • <\,$lte
  • !==,$ne
db.students.find({id:{$gt:3}}); id号比3大的所有文档
6.7.2、逻辑运算

$or逻辑或的情况

db.students.find({$or:[{age:18}, {age:24}]});

$and逻辑与的情况

db.students.find({$and:[{age:18}, {age:24}]});
6.7.3、正则匹配

条件中可以直接使用JS的正则语法,可以进行模糊查询:

db.students.find({name:/imissyou/});

6.8、mongoose个性化读取

6.7.1、字段筛选
SongModel.find().select({_id:0, title:1}).exec(function(err, data) {
  if (err) throw err;
  console.log(data);
  mongoose.connection.close();
})
6.7.2、数据排序
SongModel.find().sort({hot:1}).exec(function(err, data) {
  if (err) throw err;
  console.log(data);
  mongoose.connection.close();
})
6.7.3、数据截取
// skip跳过,limit限定
SongModel.find().skip(10).limit(10).exec(function(err, data) {
  if (err) throw err;
  console.log(data);
  mongoose.connection.close();
})

7、mongodb图形化管理工具

7.1、robo3t

去github上下载,免费

7.2、Navicat

收费文章来源地址https://www.toymoban.com/news/detail-666363.html

到了这里,关于Mongodb 以及 node.js中使用mongoose操作数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.js程序如何访问MySQL数据库呢?Sequelize操作MySQL数据库详解

    当我们安装好MySQL后,Node.js程序如何访问MySQL数据库呢? 访问MySQL数据库只有一种方法,就是通过网络发送SQL命令,然后,MySQL服务器执行后返回结果。 我们可以在命令行窗口输入mysql -u root -p,然后输入root口令后,就连接到了MySQL服务器。因为没有指定–host参数,所以我们连

    2023年04月08日
    浏览(43)
  • 前端使用node.js连接sql.server数据库教程

    最近项目中要用到node写接口然后连接公司现有的sql.server数据库,再把执行结果返回给前端(还是我),因为之前一直做前端这块,后端这方面不是很懂,花了很长的时间终于研究出来了(还是太菜了,走了很多弯路),所以写个博客,一是复习巩固,二是给其他有需要的小伙伴一个参考,尽量

    2024年02月11日
    浏览(58)
  • node基础之七:Mongodb 数据库

    下载地址:https://www.mongodb.com/try/download/community v:5.0.20 platform:window package:zip 复制到 c 盘/Programs Files c 盘创建 data/db 文件夹 默认存放数据地址 在 bin 目录下启动数据库 mongod, 客户端连接数据库 mongo 下一章:node基础之八:mongoose 操作数据库

    2024年02月09日
    浏览(48)
  • Node.Js篇 NodeJs使用MongoDB

    目录 介绍 概念解析                   安装 启动时注意事项 NodeJs操作Mongo 介绍 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。                                                           

    2024年02月09日
    浏览(51)
  • 在 Node.js 中使用 MongoDB 事务

    MongoDB事务 事务介绍 在 MongoDB 中,对单个文档的操作是原子的。由于您可以使用嵌入的文档和数组来捕获单个文档结构中的数据之间的关系,而不是跨多个文档和集合进行规范化,因此这种单一文档的原子性消除了对多文档的需求许多实际用例的事务。 对于需要对多个文档(

    2024年02月10日
    浏览(38)
  • 如何使用 Python 操作 MongoDB,包括连接、插入、查询、更新和删除数据,以及进阶用法

    MongoDB 是一种流行的 NoSQL 数据库,支持面向文档的数据存储。Python 是一种流行的编程语言,提供了许多库和工具,方便与 MongoDB 进行交互。在本文中,我们将介绍如何使用 Python 操作 MongoDB,包括连接、插入、查询、更新和删除数据,以及一些高级用法。 连接 MongoDB 在使用

    2024年02月04日
    浏览(43)
  • 【数据库MongoDB】MongoDB与大数据关系以及MongoDB中重要的进程:mongod进程与mongo进程关系

    云计算的定义有多种说法,对于到底什么是云计算,我们至少可以找到100种解释。目前广为接受的是美国国家标准与技术研究院定义: 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器

    2024年02月02日
    浏览(68)
  • mongodb数据库操作

    1、启动mongodb 在mongodb启动命令中 --dbpath 指定mongodb的数据存储路径 --logpath 指定mongodb的日志存储路径 2、停止mongodb 第一步先进入mongo命令行模式 第二步,使用use admin 命令进入admin数据库 第三步,执行 db.shutdownServer()命令 停止服务。代码及显示如下:  2 、导出Mongodb数据 mon

    2024年02月09日
    浏览(50)
  • Node.js同时安装多个版本以及相关配置(简单易操作)

    Node.js是一个基于V8引擎的开源运行时环境,用于在服务器端运行JavaScript代码。它允许您使用JavaScript来编写服务器端应用程序,如网络应用、API和后端服务,而不仅仅局限于在浏览器中执行。Node.js的非阻塞I/O和事件驱动的特性使其特别适合处理高并发的网络应用程序。本篇主

    2024年02月06日
    浏览(41)
  • MongoDB-数据库文档操作(2)

    任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握: 查询文档命令; 删除文档命令。 查询文档 我们先插入文档到集合 stu1 : 然后查看 stu1 ,命令和结果如图1所示(因为我们没有设置 _id ,所以 MongoDB 会默认生成: 图 1 上述显示的文档格式不够整齐,

    2024年01月18日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包