node.js 实战——mongoDB 续一

mongoDB的基本指令

进入mongodb

mongo

显示当前的所有数据库

show dbs 
# 或者
show databases

切换数据库/进入指定数据库

使用这个命令的时候,是不要求这个数据库是否创建

use 数据库名

显示当前数据库

db

显示数据库中所有集合

show collections

数据库的CRUD的操作

Create(插入数据)

🔹 单条插入 insertOne()

db.users.insertOne({name: "Alice",age: 25,city: "Shanghai"
})
•	会自动生成 _id 字段,保证主键唯一性。
•	如果你自己指定 _id,需要保证它的唯一,否则插入会失败。

🔹 多条插入 insertMany()

db.users.insertMany([{ name: "Bob", age: 30, city: "Beijing" },{ name: "Charlie", age: 28, city: "Guangzhou" }
])
•	insertMany 支持同时批量插入多条数据。
•	默认遇到插入错误会停止,可以设置 {ordered: false} 忽略错误继续。

比如:

db.users.insertMany([...], { ordered: false })

Read(查询数据)

🔹 查询单条数据 findOne()

db.users.findOne({ name: "Alice" })
•	返回第一个匹配的文档。
•	如果没有匹配,会返回 null。

🔹 查询多条数据 find()

db.users.find({ age: { $gte: 25 } })
•	$gte 表示 “greater than or equal”(大于等于)。
•	find() 返回一个游标(Cursor),可以链式继续操作(比如 .limit(), .sort())。

常见查询符号:

符号说明
$gt大于
$lt小于
$gte大于等于
$lte小于等于
$eq等于
$ne不等于
$in包含于数组内
$nin不包含于数组内

例子,查找城市在 “Beijing” 或 “Shanghai” 的人:

db.users.find({ city: { $in: ["Beijing", "Shanghai"] } })

🔹 查询时只要部分字段(Projection)

db.users.find({ age: { $gte: 25 } },{ name: 1, city: 1, _id: 0 }
)
•	1 表示要返回,0 表示不返回。
•	默认 _id 是返回的,要特别用 _id: 0 才能不返回。

🔹 排序 sort()

按年龄升序排列:

db.users.find().sort({ age: 1 })

按年龄降序排列:

db.users.find().sort({ age: -1 })

🔹 分页 skip() + limit()

比如分页查询,第2页,每页10条:

db.users.find().skip(10).limit(10)

Update(更新数据)

🔹 更新单条数据 updateOne()

db.users.updateOne({ name: "Alice" },{ $set: { age: 26 } }
)
•	$set 更新指定字段。
•	如果匹配到多个,只更新第一条。

🔹 更新多条数据 updateMany()

db.users.updateMany({ city: "Shanghai" },{ $set: { city: "SH" } }
)
•	更新所有符合条件的文档。

🔹 upsert(如果没有就插入)

upsert: true 意味着 “找不到就插入”:

db.users.updateOne({ name: "David" },{ $set: { age: 22, city: "Wuhan" } },{ upsert: true }
)

🔹 更新字段数组 push/addToSet

往数组字段加元素:

db.users.updateOne({ name: "Alice" },{ $push: { hobbies: "reading" } }
)

避免重复添加元素,用 $addToSet:

db.users.updateOne({ name: "Alice" },{ $addToSet: { hobbies: "music" } }
)

Delete(删除数据)

🔹 删除单条数据 deleteOne()

db.users.deleteOne({ name: "Charlie" })
•	只删除第一条匹配到的数据。

🔹 删除多条数据 deleteMany()

db.users.deleteMany({ age: { $lt: 25 } })
•	删除所有符合条件的记录。

📌 特别注意事项

•	MongoDB 默认是弱事务(非强一致性),要谨慎考虑事务问题(尤其是金融类应用)。
•	大批量更新/删除建议加限制条件,防止误操作导致全表数据被删。
•	开发时可以用 MongoDB Compass 或 Robo 3T(图形界面工具),更直观看数据。

🚀 补充:一个完整的小例子

// 插入新用户
db.users.insertOne({ name: "Tom", age: 20, hobbies: ["basketball"] })// 查找Tom
db.users.findOne({ name: "Tom" })// 更新Tom的年龄
db.users.updateOne({ name: "Tom" }, { $set: { age: 21 } })// 给Tom增加一个爱好
db.users.updateOne({ name: "Tom" }, { $addToSet: { hobbies: "reading" } })// 删除年龄小于18岁的用户
db.users.deleteMany({ age: { $lt: 18 } })

Mongoose

Mongoose是一个对象文档模型库, 是在node.js 中方便使用代码操作mongodb数据库

返回
mongoose
mongodb服务
前端或后台api

安装

npm i mongoose

导入mongoose

const mongoose = require('mongoose');

链接数据库

mongoose.connect("mongodb://localhost:27017/test",
)

设置回调

mongoose.connection.once("open", ()=>{})mongoose.connection.on("error", (err)=>{})mongoose.connection.on("close", ()=>{})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVMSPro平台获取Websocket视频流规则

SVMSPro平台获取Websocket视频流规则 Websocket 的服务端口为:53372,如需要公网访问需要开启这个端口 这里讲的是如何获取长效URL,短效(时效性)URL也支持,下回讲 一、如何获取Websocket实时流视频 ws:/…

Arduino按键开关编程详解

一、按键开关的基本原理与硬件连接 1.1 按键开关的工作原理 按键开关是一种常见的输入设备,其核心原理基于机械触点的闭合与断开。当用户按下按键时,内部的金属片会连接电路两端,形成通路;松开按键后,金属片在弹簧作…

我的日记杂文

Sequoia sempervirens 北美红杉树 Troll 洞穴巨人 喜欢在网上搞事的人 piss off 滚开 让人恼火的 欧洲美甲 60euor - 30euro 拖车 mobie house Motel 汽车旅馆 Minoxidil 米诺地尔 Health insurance 医疗保险 casetify 香港手机品牌 coolant 汽车防冻液 Auto tint film 汽车贴…

数字智慧方案5867丨智慧建造(BIM技术智慧工地)在施工阶段的实践与应用方案(90页PPT)(文末有下载方式)

资料解读:智慧建造(BIM技术智慧工地)在施工阶段的实践与应用方案 详细资料请看本解读文章的最后内容。 在当今的建筑行业中,智慧建造已成为提升施工效率和质量的关键手段。随着科技的进步,智慧建造结合了物联网、大数据、人工智能等技术&am…

机器学习中的标签策略:直接标签、代理标签与人工数据生成

机器学习中的标签策略:直接标签、代理标签与人工数据生成 摘要 本文深入探讨了机器学习领域中标签的关键概念,包括直接标签与代理标签的定义、优缺点比较,以及人工生成数据的相关内容。通过详细实例和练习,帮助读者理解如何选择…

从0搭建Transformer

1. 位置编码模块: import torch import torch.nn as nn import mathclass PositonalEncoding(nn.Module):def __init__ (self, d_model, dropout, max_len5000):super(PositionalEncoding, self).__init__()self.dropout nn.Dropout(pdropout)# [[1, 2, 3],# [4, 5…

【Bootstrap V4系列】学习入门教程之 表格(Tables)和画像(Figure)

Bootstrap V4系列 学习入门教程之 表格(Tables)和画像(Figure) 表格(Tables)一、Examples二、Table head options 表格头选项三、Striped rows 条纹行四、Bordered table 带边框的表格五、Borderless table…

在C# WebApi 中使用 Nacos02: 配置管理、服务管理实战

一、配置管理 1.添加一个新的命名空间 这里我都填写为publicdemo 2.C#代码配置启动 appsetting.json加上: (nacos默认是8848端口) "NacosConfig": {"ServerAddresses": [ "http://localhost:8848" ], // Nacos 服务器地址"Na…

如何搭建spark yarn 模式的集群集群。

下载 App 如何搭建spark yarn 模式的集群集群。 搭建Spark on YARN集群的详细步骤 Spark on YARN模式允许Spark作业在Hadoop YARN资源管理器上运行,利用YARN进行资源调度。以下是搭建步骤: 一、前提条件 已安装并配置好的Hadoop集群(包括HDF…

C++--入门基础

C入门基础 1. C的第一个程序 C继承C语言许多大多数的语法,所以以C语言实现的hello world也可以运行,C中需要把文件定义为.cpp,vs编译器看是.cpp就会调用C编译器编译,linux下要用g编译,不再是gcc。 // test.cpp #inc…

从实列中学习linux shell9 如何确认 服务器反应迟钝是因为cpu还是 硬盘io 到底是那个程序引起的。cpu负载多高算高

在 Linux 系统中,Load Average(平均负载) 是衡量系统整体压力的关键指标,但它本身没有绝对的“高/低”阈值,需要结合 CPU 核心数 和 其他性能指标 综合分析。以下是具体判断方法: 一、Load Average 的基本含义 定义:Load Average 表示 单位时间内处于可运行状态(R)和不…

聊一聊接口测试更侧重于哪方面的验证

目录 一、功能性验证 输入与输出正确性 参数校验 业务逻辑覆盖 二、数据一致性验证 数据格式规范 数据完整性 数据类型与范围 三、异常场景验证 容错能力测试 边界条件覆盖 错误码与信息清晰度 四、安全与权限验证 身份认证 数据安全 防攻击能力 五、性能与可…

Fiddler抓取APP端,HTTPS报错全解析及解决方案(一篇解决常见问题)

环境:雷电模拟器Android9系统 ​ 你所遇到的fiddler中抓取HTTPS的问题可以分为三类:一类是你自己证书安装上逻辑错误,另一种是APP中使用了“证书固定”的手段。三类fiddler中生成证书时的参数过程。 1.Fiddler证书安装上的逻辑错误 更新Opt…

OpenGL-ES 学习(15) ----纹理

目录 纹理简介纹理映射纹理映射流程示例代码:纹理的环绕和过滤方式纹理的过滤方式 纹理简介 现实生活中,纹理(Texture) 类似于游戏中皮肤的概念,最通常的作用是装饰 3D 物体,它像贴纸一样贴在物体的表面,丰富物体的表…

OpenCV计算机视觉实战(2)——环境搭建与OpenCV简介

OpenCV计算机视觉实战(2)——环境搭建与OpenCV简介 0. 前言1. OpenCV 安装与配置1.1 安装 Python-OpenCV1.2 配置开发环境 2. OpenCV 基础2.1 图像读取与显示2.2 图像保存 3. 摄像头实时捕获小结系列链接 0. 前言 OpenCV (Open Source Computer Vision …

ubuntu22.04安装显卡驱动与cuda+cuDNN

背景: 紧接前文:Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战。在R740服务器完成了proxmox的安装,并且安装了一张2080ti 魔改22g显存的的显卡。配置完了proxmox显卡直通,并将显卡挂载到了vm 301(…

A2A Python 教程 - 综合指南

目录 • 介绍• 设置环境• 创建项目• 代理技能• 代理卡片• A2A服务器• 与A2A服务器交互• 添加代理功能• 使用本地Ollama模型• 后续步骤 介绍 在本教程中,您将使用Python构建一个简单的echo A2A服务器。这个基础实现将向您展示A2A提供的所有功能。完成本教…

MySQL基础关键_005_DQL(四)

目 录 一、分组函数 1.说明 2.max/min 3.sum/avg/count 二、分组查询 1.说明 2.实例 (1)查询岗位和平均薪资 (2)查询每个部门编号的不同岗位的最低薪资 3.having (1)说明 (2&#xff…

GAMES202-高质量实时渲染(Assignment 2)

目录 作业介绍环境光贴图预计算传输项的预计算Diffuse unshadowedDiffuse shadowedDiffuse Inter-reflection(bonus) 实时球谐光照计算 GitHub主页:https://github.com/sdpyy1 作业实现:https://github.com/sdpyy1/CppLearn/tree/main/games202 作业介绍 物体在不同…