node中的数据持久化之mongoDB

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

一、什么是mongoDB

MongoDB是一种开源的非关系型数据库,正如它的名字所表示的,MongoDB支持的数据结构非常松散,是一种以bson格式(一种json的存储形式)的文档存储方式为主,支持的数据结构类型更加丰富的NoSQL数据库。它是一种介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB主要用于处理大量的数据存储。很多时候 MongoDB 用于实现那些由于使用类似 MySQL的关系型数据库而困难的大尺度、高性能、灵活模式的数据库。

MongoDB的主要特点有:

  1. 面向集合存储:适合存储对象及JSON类型数据,数据模型可变。
  2. 动态模式:MongoDB不需要预定义结构,如SQL数据库那样需要先定义表,再进行插入操作。你可以自由地在集合中插入数据,无需先定义文档结构。
  3. 支持丰富的查询操作
  4. 支持索引:任何一个MongoDB集合文件可以建立索引。
  5. 支持自动分片:自动云存储。
  6. 使用高效的二进制数据存储,包括了大型对象(比如视频等)。
  7. 支持复制和故障恢复
  8. 支持 Map/Reduce 和聚合工具

MongoDB的应用场景
MongoDB是一种非关系型数据库,它为现代应用程序提供了规模化、灵活和详细的数据模型及综合特性。以下是一些MongoDB的应用场景。

  1. 内容管理系统
    在为内容管理系统(CMS)设计数据模型时,因为内容、评论、修订历史、标签和其它元数据的异质性和大小的巨大差异,所以非结构化数据库如MongoDB特别适合这种用途。

  2. 实时数据分析
    MongoDB为开发者提供了许多内置的函数,使得他们可以部分地或者完全地在数据库级别完成对大数据的实时处理。

  3. 物联网
    MongoDB可以高效的处理和分析来自于传感器以及智能设备的大量数据,凭借其地理位置查询的功能,mongodb成为物联网的一个常用数据库。

  4. 移动应用
    MongoDB支持多种数据格式,灵活的数据模型和分片功能,使得在移动应用中可以轻易应对快速发布新版本。

  5. 游戏开发
    MongoDB提供了对大量用户数据的存储和处理能力,并且具有十分高的扩展性,可以很好地应对游戏数据的爆发式增长。

  6. 个性化推荐
    MongoDB可以存储大量的用户数据,包括点击数据、购买数据以及其他在线行为数据,这些都是进行个性化推荐的基础。

以下是一个实际应用案例
MetLife(美国人寿保险公司)使用MongoDB开发了一款名叫“The Wall”的应用程序,这款应用可以将用户的碎片化信息汇总到一块 "墙"上。这些信息包括但不仅限于保单信息、索赔状态、保费、家庭成员资料等等一系列可能来自于不同来源(SQL或者是NoSQL)的数据。

二、mongoDB的下载与安装

mongodb管网:https://www.mongodb.com/

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

1. 进入官网之后打开文档

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

2. 找到install介绍

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

3. 根据自己的系统安装对应的版本

这里介绍一下在windows下如何安装。
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
下载之后,双击运行根据提示安装就行了。

配置环境变量

安装完成之后我们打开shell命令窗口,输入:mongo
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
如图:提示没有这个命令,这时我们需要配置一下mongodb的执行环境变量

我的电脑->属性->高级系统设置->环境变量->path
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
如图,这样在path下配置一下就可以了,
我们再次打开shell,输入mongo
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
这样就成功啦。

三、mongoDB可视化工具介绍

1. MongoDB Compass

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
这个工具是你用mis方式安装时,mongoDB官方自带的可视化工具
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

2. Navicat Premium

Navicat官网:https://www.navicat.com.cn/
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
这款工具功能很强大,支持很多数据库的可视化,我们选择连接,点击MongoDB.
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
点击新建查询,输入show dbs查看系统默认的数据库
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

3. MongoDB for VS Code

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
去插件市场安装以后,点击connect连接
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

四、mongodb常用命令

命令 描述
db.help() 显示数据库操作命令,如createCollection(name, options)、dropDatabase()等。
db..help() 显示集合操作命令,如db..find().help()、db..drop()等。
show dbs 显示数据库列表。
use <db_name> 切换当前数据库到<db_name>。如果数据库不存在,会创建新的数据库。
show collections 显示当前数据库中的集合(相当于关系数据库中的表)。
db.createCollection(name, options) 创建集合。
db.collection.insert() 插入数据。
db.collection.find() 查询数据。
db.collection.update() 更新数据。
db.collection.remove() 删除数据。
db.collection.drop() 删除集合。
db.collection.createIndex(keys, options) 创建索引。
db.collection.dropIndex(name) 删除索引。
db.collection.getIndexes() 列出所有索引。
db.collection.count() 计算集合中的文档数。
db.collection.aggregate(pipeline) 对集合中的文档进行各种形式的聚合操作。
db.runCommand(cmd) 运行数据库命令。

这些是常用的一些Mongodb命令,具体使用可以参考Mongodb的文档说明。

1. 对集合数据的增删改查

在MongoDB中,对集合数据的增删改查(CRUD)操作可以通过db.collection.find(), .insert(), .update(), .delete()方法执行。假设我们有一个叫做"user"的集合,包含"Name"和"Age"的字段。

查询
我们可以使用.find()方法来查询数据。例如,你可以通过以下方式来查找所有用户:

db.user.find({})

这将列出所有的用户。

如果你想查找特定的用户,你可以添加查询条件,如下所示:

db.user.find({"name" : "Alice"})

该查询将列出名字为Alice的所有用户。

插入
你可以使用.insert()方法插入数据。例如,你可以通过以下方式插入一个新的用户:

db.user.insert({"name" : "Bob", "age" : 30})

这将在集合中创建一个新用户,名为Bob,年龄30。

更新
对于更新,我们使用.update()方法。例如,我们可以更新名为Alice的用户的年龄,如下所示:

db.user.update({"name" : "Alice"}, {$set : {"age" : 25}})

在上面的例子中,第一个对象是我们想要更新的用户的查询条件,第二个对象是我们想要更改的字段和新值。

删除
删除数据可以使用.remove()方法。例如,我们可以删除名为Bob的用户,如下所示:

db.user.remove({"name" : "Bob"})

以上就是如何在MongoDB中对一个集合中的数据进行增删改查操作。

五、node中连接mongoDB

1. 使用mongodb连接

连接MongoDB数据库是Node.js应用程序很常见的一种需求。我们可以通过使用第三方包mongodb来实现这一点。在开始之前,确保你的系统上已经安装了mongodbnode.js,而且`mongodb``服务器已经运行。

下面是一个详细的步骤:

步骤1:首先,我们需要在我们的项目中安装mongodb第三方包。在终端中,切换到你的项目路径,然后执行以下命令来安装:

npm install mongodb

步骤2:在你的Node.js代码里,你需要引入mongodb项:

const MongoClient = require('mongodb').MongoClient;

步骤3:然后,你需要创建一个MongoDB客户端,连接数据库。下面是一个例子:

const uri = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

这里的URI是你的mongodb数据库的URI,格式是mongodb://username:password@server:port/database。如果你是在本地使用mongodbURI可能会是"mongodb://localhost:27017/mydb"。

步骤4:接下来,你需要连接到MongoDB服务器。你可以使用以下的代码来实现:

client.connect(err => {
  if (err) throw err;
  console.log("Connected to MongoDB server");
  client.close();
});

如果你成功地连接到了MongoDB服务器,将会在控制台打印出"Connected to MongoDB server"。如果遇到任何问题,程序会抛出异常。

步骤5:你也可以在连接后对数据库进行增删改查的操作。例如:

client.connect(err => {
  if (err) throw err;
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});

步骤6:记得在完成所有操作后关闭连接

完整代码如下:

//通过mongodb连接mongodb
const { MongoClient } = require('mongodb') //引入mongodb
const url = 'mongodb://localhost:27017'
const dbName = 'test'
const clinet = new MongoClient(url, { useUnifiedTopology: true }) //创建客户端
const main = async () => {
    await clinet.connect() //连接数据库
    console.log('连接成功')
    const db = clinet.db(dbName) //选择数据库
    const collection = db.collection('users') //选择集合
    //插入数据
    const result = await collection.insertOne({ name: 'jack', age: 20 })
    console.log(result)
    //查询数据
    const resultFind = await collection.find({ name: 'jack' }).toArray()
    console.log(resultFind)
    //更新数据
    // const result = await collection.updateOne({ name: 'jack' }, { $set: { age: 21 } })
    // console.log(result)
    //删除数据
    // const result = await collection.deleteOne({ name: 'jack' })
    // console.log(result)
}
main().catch(console.dir).finally(() => {
    clinet.close() //关闭连接
})

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js

以上就是在Node.js中通过mongodb包连接MongoDB数据库的全部步骤。

2. 使用mongoose连接

Node.js连接MongoDB数据,我们还可以使用一个名为Mongoose的包。Mongoose是一个MongoDB对象建模工具,设计用于在异步环境中工作。

以下是一些步骤来连接你的数据库:

安装 Mongoose
我们需要确保已经安装了node.js 和 npm(包管理工具)。然后,在你的node.js应用的根目录中运行以下命令来安装Mongoose:

npm install mongoose

初始化mongoose 连接
使用下列JavaScript代码段来初始化mongoose连接。这段代码应该被放置在你的主应用文件(通常是app.js或者server.js)的开头:

const mongoose = require('mongoose');
mongoose.connect('mongodb://<username>:<password>@<hostname>:<port>/<database>');

在这段代码中,<username>和<password>需要被你的MongoDB用户名和密码替换.<hostname>和<port>如果你使用的是本地数据库这两个参数通常是localhost和27017.<database>则是你希望连接的数据库名。

监听Connection events
你需要监听两个事件:

  1. error:在连接过程中出错时将被触发。

  2. open:当连接成功建立时将被触发。

下面的代码给了添加和监听这些事件的例子:

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  // yay!
});

你的Mongoose连接现在应该可以被Node.JS应用使用了。

始终记住,连接操作在应用启动时只被调用一次。你可以用mongoose.connection对象在你的应用代码中的任何位置获取当前的数据库连接。不要多次调用mongoose.connect,因为可能会导致意外的结果。

完整代码如下:

// 引入数据库处理模块
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true, useCreateIndex: true })
    .then(() => console.log('数据库连接成功'))
    .catch(() => console.log('数据库连接失败'))

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
    // 查询user集合中的所有文档
    db.collection('users').find().toArray(function (err, docs) {
        // 打印
        console.log(docs);
    });
});

node中的数据持久化之mongoDB,node,mongodb,数据库,vscode,前端,node.js
以上就是在Node.js中通过mongoose包连接MongoDB数据库的全部步骤文章来源地址https://www.toymoban.com/news/detail-541814.html

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

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

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

相关文章

  • flutter:数据持久化

    保存数据到本地磁盘是应用程序常用功能之一,比如保存用户登录信息、用户配置信息等。而保存这些信息通常使用 shared_preferences ,它保存数据的形式为 Key-Value (键值对),支持 Android 和 iOS。 shared_preferences 是一个第三方插件,在 Android 中使用 SharedPreferences ,在 iOS中使用

    2024年02月09日
    浏览(34)
  • 【2023】Redis数据持久化

    Redis是基于内存的NoSQL数据库,读写速度很快,但是存储在内存中的Redis数据会在服务器重启后丢失。 然而在一些场景中,需要长久的保存数据,所以需要把内存中的数据持久化的保存在硬盘中。 Redis持久化提供两种方式: 1️⃣:AOF(Append Only File)只追加文件 2️⃣:RDB(

    2024年02月10日
    浏览(41)
  • Docker容器数据持久化

    Docker容器数据卷:volumes        数据卷是经过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集

    2024年02月10日
    浏览(44)
  • redis数据安全(一)数据持久化

     一、Redis数据安全措施: 1、将数据持久化至硬盘 2、将数据复制至其他机器; 复制是在数据持久化的基础上进行的。 二、将数据持久化至硬盘 1、介绍:Redis是一个基于内存的数据库,它的数据是存放在内存中,内存有个问题就是关闭服务或者断电会丢失。Redis的数据也支持

    2024年01月20日
    浏览(29)
  • Flutter 应用数据持久化指南

    1.1 什么是数据持久化? 数据持久化是指将应用程序中的数据保存在持久存储介质(如硬盘、数据库等)中的过程。在计算机科学领域,持久化数据是指数据在程序退出或系统关机后仍然存在的能力。这种持久性使得数据可以在不同的应用程序运行周期之间保持不变,以便稍

    2024年04月10日
    浏览(41)
  • Docker啥是数据持久化?

    ​ 在容器层的 UnionFS(联合文件系统)中对文件/目录的任何修改,无论是手工修改还是容器在运行过程中的修改,在该容器丢失或被删除后这些修改将全部丢失。即这些修改是无法保存下来的。若要保存下来这些修改,通常有两种方式: 定制镜像持久化:将这个修改过的容

    2024年02月15日
    浏览(31)
  • Redis 7 教程 数据持久化

            RDB 持久化以指定的时间间隔执行数据集的时间点快照 。         把某一时刻的数据和状态以文件的形式写到磁盘上,即使出现故障宕机,快照文件也不会丢失,数据的可靠性得到保证。快照文件就是RDB(Redis DataBase)文件(dump.rdb)          在指定的时间间隔内将

    2024年02月11日
    浏览(31)
  • Docker 数据持久化方案详解

    目录 一、Docker数据持久化概述 1.1联合文件系统 1.2容器的数据卷 1.2.1 什么是数据卷 1.2.2 数据卷特点 1.2.3 Docker提供三种方式将数据从宿主机挂载到容器 二、 Docker持久化方案 2.1 查看volume 基本命令使用方法 2.2 volume持久化方案 2.2.1volume简介 2.2.2.volume特点 2.2.3 挂载指定volume 2.

    2024年02月07日
    浏览(39)
  • 【pinia持久化存储】使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储

    使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储。 存储方式 : localStorage sessionStorage pinia-plugin-persistedstate 中文官网 pinia 中文官网 安装和使用 pinia ,请参考使用pinia文章。 安装 pinia-plugin-persistedstate : 使用前先将 pinia-plugin-persistedstate添加到pinia实例上。 在添加的时

    2023年04月17日
    浏览(34)
  • 小程序如何实现登录数据持久化

    在小程序中实现登录数据的持久化可以通过以下几种方式: 使用本地缓存 在用户登录成功后,将登录凭证或用户信息等数据使用  wx.setStorageSync  方法存储到本地缓存中: 在小程序启动时或需要使用登录数据的页面中,通过  wx.getStorageSync  方法读取本地缓存中的数据: 使

    2024年02月05日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包