mongoDB的安装及使用

devtools/2024/11/16 18:56:01/

文章目录

  • 1、mongoDB的简介
  • 2、mongoDB的安装及配置
  • 3、node.js项目中mongoDB使用
    • 3.1.引入库
    • 3.2.数据操作增删改
  • 4、mongoDB的查询
    • 4.1.查询
    • 4.2.高级查询


1、mongoDB的简介

  • MongoDB是一个流行的开源文档型数据库,它使用类似 JSON 的文档模型存储数据,这使得数据存储变得非常灵活。

  • MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。

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

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

  • MongoDB的设计理念是为了应对大数据量、高性能和灵活性需求。

  • MongoDB使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。

    数据库(Database):存储数据的容器,类似于关系型数据库中的数据库
    集合(Collection):数据库中的一个集合,类似于关系型数据库中的表。
    文档(Document):集合中的一个数据记录,类似于关系型数据库中的行(row),以 BSON 格式存储

    特点

    1. 文档导向的存储:MongoDB 是一个面向文档的数据库,它以 JSON-like 的格式存储数据,使得数据结构更加灵活和丰富。
    2. 索引优化查询:MongoDB 允许用户为文档中的任意属性创建索引,例如 FirstName 和 Address,从而提高查询效率和排序性能。
    3. 数据镜像与扩展性:通过本地或网络创建数据的副本,MongoDB 实现了强大的数据冗余和扩展能力。
    4. 水平扩展与分片:面对增加的负载,MongoDB 可以通过分片技术将数据分布到计算机网络中的其他节点上,实现水平扩展
    5. 强大的查询语言:MongoDB 使用 JSON 格式的查询语法,支持复杂的查询表达式,包括对内嵌对象和数组的查询。
    6. 数据更新:利用 update() 命令,MongoDB 能够替换整个文档或更新指定的数据字段,提供了灵活的数据更新方式。
    7. MapReduce 批量处理:MongoDB 的 MapReduce 功能专为大规模数据处理和聚合操作设计,通过 Map 函数的 emit(key, value) 调用和 Reduce 函数的逻辑处理,实现高效的数据汇总。
    8. MapReduce 脚本编写:Map 和 Reduce 函数使用 JavaScript 编写,可以通过 db.runCommand 或 mapreduce 命令在 MongoDB 中执行。
    9. GridFS 大文件存储:GridFS 是 MongoDB 内置的功能,用于存储和检索大于 BSON 文档大小限制的文件,如图片和视频。
    10. 服务端脚本执行:MongoDB 允许在服务端执行 JavaScript 脚本,提供了直接在服务端执行或存储函数定义以供后续调用的能力。
    11. 多语言支持:MongoDB 提供了对多种编程语言的支持,包括但不限于 RUBY、PYTHON、JAVA、C++、PHP 和 C#。
    12. 安装简单:MongoDB 的安装过程简单直观,便于用户快速部署和使用。

2、mongoDB的安装及配置

mongoDB官网地址
进入官网—>点击社区版进入下载页面
在这里插入图片描述
选择版本,支持的计算机系统,进行下载,下载的是.msi文件
在这里插入图片描述
可以通过点击 “Custom(自定义)” 按钮来设置你的安装目录。
在这里插入图片描述
在这里插入图片描述
下一步安装 “install mongoDB compass” 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装下载地址也可以勾选安装的比较慢,可以耐心等待。
在这里插入图片描述
可以通过mongoDBCompass应用打开控制面板,进行数据库设置,也可以通过指令操作,可以建项目用到的表
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8e0bcca30da546a5aba8642bb0b00039.png
在这里插入图片描述
可以添加数据或者导入json数据
在这里插入图片描述
导入数据成功
在这里插入图片描述

nodejsmongoDB_48">3、node.js项目中mongoDB使用

3.1.引入库

新建文件夹,初始化package.json文件

npm init -y

在这里插入图片描述
npm插件地址
项目中执行指令运用MongoDB,会安装依赖包

npm install mongodb
# or ...
yarn add mongodb

在这里插入图片描述
项目中应用,运行程序指令,code.js为文件名

node ./code.js

code.js文件

const { MongoClient } = require('mongodb');
// or as an es module:
// import { MongoClient } from 'mongodb'// Connection URL
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);// Database Name
const dbName = 'test';async function main() {// Use connect method to connect to the serverawait client.connect();// 取出数据库const db = client.db(dbName);// 从数据库中取出集合对象const collection = db.collection('person');// 添加返回所有文档的查询。let pers = await collection.find({}).toArray();console.log(pers);return 'done.';
}main().then(console.log).catch(console.error).finally(() => client.close());

3.2.数据操作增删改

  • 新增数据
    1. insertOne() 方法用于在集合中插入单个文档。
      db.collection.insertOne(document, options)
      document:要插入的单个文档。
      options(可选):一个可选参数对象,可以包含 writeConcern 和 bypassDocumentValidation 等。
    2. insertMany() 方法用于在集合中插入多个文档。
      db.collection.insertMany(documents, options)
      documents:要插入的文档数组。
      options(可选):一个可选参数对象,可以包含 ordered、writeConcern 和 bypassDocumentValidation 等。
    3. db.collection.save()方法在插入文档时表现得类似于 insertOne()。
      db.collection.save(document, options)
      document:要保存的文档。
      options(可选):一个可选参数对象,可以包含 writeConcern 等。
    4. options 参数
      - ordered(仅适用于 insertMany):布尔值。如果为 true,则按顺序插入文档,在遇到错误时停止;如果为 false,则尝试插入所有文档,即使遇到错误也继续。默认值为 true。
      - writeConcern:指定写操作的确认级别。
      - bypassDocumentValidation:布尔值。如果为 true,则忽略集合的文档验证规则。
      // 新增数据let insertResult  =  await collection.insertMany([{ name:'西西(女)' , age:12 }]);console.log(insertResult);
    
    insertMany 命令返回一个对象,其中包含有关 insert 操作的信息。
    在这里插入图片描述
    上图信息:修改成功,修改一条,修改的id
  • 修改数据
    1. updateOne() 方法用于更新匹配过滤器的单个文档。
      db.collection.updateOne(filter, update, options)
      filter:用于查找文档的查询条件。
      update:指定更新操作的文档或更新操作符。
      options:可选参数对象,如 upsert、arrayFilters 等。
    2. updateMany() 方法用于更新所有匹配过滤器的文档。
      db.collection.updateMany(filter, update, options)
      filter:用于查找文档的查询条件。
      update:指定更新操作的文档或更新操作符。
      options:可选参数对象,如 upsert、arrayFilters 等。
    3. replaceOne() 方法用于替换匹配过滤器的单个文档,新的文档将完全替换旧的文档。
      db.collection.replaceOne(filter, replacement, options)
      filter:用于查找文档的查询条件。
      replacement:新的文档,将替换旧的文档。
      options:可选参数对象,如 upsert 等。
    4. findOneAndUpdate() 方法用于查找并更新单个文档,可以选择返回更新前或更新后的文档。
      db.collection.findOneAndUpdate(filter, update, options)
      filter:用于查找文档的查询条件。
      update:指定更新操作的文档或更新操作符。
      options:可选参数对象,如 projection、sort、upsert、returnDocument 等。
    5. options 参数
      upsert:如果没有匹配的文档,是否插入一个新文档。
      arrayFilters:当更新嵌套数组时,指定应更新的数组元素的条件。
      collation:指定比较字符串时使用的排序规则。
      returnDocument:在 findOneAndUpdate 中使用,指定返回更新前 (“before”) 或更新后 (“after”) 的文档。
     const updateResult = await collection.updateMany({name:'西西'},{$set:{age:18}});console.log(updateResult);
    
    在这里插入图片描述 在这里插入图片描述
  • 删除数据
    1. deleteOne() 方法用于删除匹配过滤器的单个文档。
      db.collection.deleteOne(filter, options)
      // filter 用于查找要删除的文档的查询条件。 options(可选):一个可选参数对象。
    2. deleteMany() 方法用于删除所有匹配过滤器的文档。
      db.collection.deleteMany(filter, options)
      filter:用于查找要删除的文档的查询条件。options(可选):一个可选参数对象。
    3. findOneAndDelete() 方法用于查找并删除单个文档,并可以选择返回删除的文档。
      db.collection.findOneAndDelete(filter, options)
      filter:用于查找要删除的文档的查询条件。options:可选参数对象,如 projection、sort 等。
      // 删除数据 西西const deleteResult  = await collection.deleteMany({_id: new ObjectId("6736b73c48a9f999c6acfe2d")})console.log(deleteResult)
    
    <a class=数据库信息已删除" /> 返回信息
    返回信息解析:执行成功,删除一条数据

4、mongoDB的查询

4.1.查询

使用 find()、findOne() 方法。

  1. find()
    方法以非结构化的方式来显示所有文档。
    db.collection.find(query, projection)
    

    query:用于查找文档的查询条件。默认为 {},即匹配所有文档。
    projection(可选):指定返回结果中包含或排除的字段。
    返回数据格式
    返回数组,可以使用 toArray() 方法

    let pers = await collection.find({}).toArray();console.log(pers);
    
  2. findOne()
    用于查找集合中的单个文档。如果找到多个匹配的文档,它只返回第一个。
    db.collection.findOne(query, projection)
    

    query:用于查找文档的查询条件。默认为 {},即匹配所有文档。
    projection(可选):指定返回结果中包含或排除的字段。

      let pers = await collection.findOne({name: '西西(女)'})console.log(pers);
    
    在这里插入图片描述

4.2.高级查询

  1. 比较操作符
    比较操作符:$gt、$lt、$gte、$lte、$eq、$ne 、$in、 $nin

    小于 $lt
    小于等于 $lte
    大于 $gt
    大于等于 $gte
    不等于 $ne
    等于 $eq
    在指定的数组中 $in
    不在指定的数组中 $nin

      let pers = await collection.find({age:  { $lt: 25 }}).toArray();
    console.log(pers);
    

    在这里插入图片描述

  2. 逻辑操作符
    $and、$or、$not、$nor

    $and 逻辑与,符合所有条件
    $or 逻辑或,符合任意条件
    $not 取反,不符合条件
    $nor 逻辑与非,均不符合条件

     let pers = await collection.find({$and:  [{name: '小黑'}, {age: 67}]}).toArray();console.log(pers);
    

    在这里插入图片描述

  3. 使用正则表达式
    使用正则表达式进行模式匹配查询。

     let pers = await collection.find({name: //}).toArray();console.log(pers);
    

    在这里插入图片描述

  4. 排序
    对查询结果进行排序。

      let pers = await collection.find({name: //}).sort({ age: -1 }).toArray();console.log(pers);
    

    在这里插入图片描述

  5. 限制与跳过
    可以对查询结果进行限制和跳过指定数量的文档。

    let pers = await collection.find({}).sort({age: -1}).skip(5).limit(5).toArray();
    console.log(pers);
    

    在这里插入图片描述


http://www.ppmy.cn/devtools/134501.html

相关文章

基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)

摘 要 互联网发展至今&#xff0c;广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#xff0c;劳动强度大&#xff0c;费时费力…

Tidb数据恢复

表删除delete删除恢复(误删除) 指定时间查询 恢复 #恢复数据 #查看安全点 select * from mysql.tidb where variable_nametikv_gc_safe_point; #安全时间 select * from mysql.tidb where variable_name tikv_gc_life_time; #避免操作过慢 延长安全时间 update mysql.tidb set …

H.264/H.265播放器EasyPlayer.js无插件直播流媒体音视频播放器延迟丢帧的原因

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

1436:数列分段II -整型二分

1436&#xff1a;数列分段II 题目来源&#xff1a;一本通 【输入样例】 5 3 4 2 4 5 1【输出样例】 6题意 将数列分成若干段&#xff0c;最多M段&#xff0c;求这些段中最大值中的最小值。&#xff08;M<N是M的约束&#xff09; 思路 最大最小问题考虑二分。由于M越大&…

React Native 全栈开发实战班 - 状态管理入门(Context API)

在 React Native 应用中&#xff0c;状态管理 是构建复杂用户界面的关键。随着应用规模的增长&#xff0c;组件之间的数据共享和状态同步变得越来越复杂。React 提供了多种状态管理工具&#xff0c;其中 Context API 是 React 内置的轻量级解决方案&#xff0c;适用于中小型应用…

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

使用阿里云快速搭建 DataLight 平台

使用阿里云快速搭建 DataLight 平台 本篇文章由用户 “闫哥大数据” 分享&#xff0c;B 站账号&#xff1a;https://space.bilibili.com/357944741?spm_id_from333.999.0.0 注意&#xff1a;因每个人操作顺序可能略有区别&#xff0c;整个部署流程如果出现出入&#xff0c;以…

npm install命令报错:npm ERR Could not resolve dependency npm ERR peer…

在运行前端代码下载依赖时&#xff0c;使用 npm install 命令安装依赖时遇到错误&#xff0c;报错信息如下&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: project0.1.0 npm ERR! Found: esli…