当前位置: 首页 > ai >正文

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.xdnf.cn/news/2858.html

相关文章:

  • MySQL中的分组和多表连接
  • 信息过载(Information Overload):太多的信息导致了信息处理能力的饱和
  • 浏览器自动化工具:Selenium 和 Playwright
  • iOS—仿tableView自定义闹钟列表
  • 多维驱动:负载均衡何以成为现代系统架构的基石
  • AI应用实战:Excel表的操作工具
  • 通过AWS Console连接服务器,简化运维过程
  • Springboot使用登录拦截器LoginInteceptor来做登录认证
  • AI与软件测试的未来:如何利用智能自动化改变测试流程
  • Typescript d.ts 文件作用
  • 《算法笔记》10.5小节——图算法专题->最小生成树 问题 E: Jungle Roads
  • 水平布局组 (Horizontal Layout Group)
  • ​钓鱼网页散播银狐木马,远控后门威胁终端安全
  • 基于卫星遥感监测火情的技术原理解析
  • .NET 平台详解
  • conda相关操作
  • 存储器分类
  • 物联网平台厂商有哪些?2025物联网平台推荐?国内有哪些比较好的物联网平台?
  • 初识Redis · 分布式锁
  • 海外社交App用户留存秘籍:构建高粘性社区的算法与运营实战
  • MATLAB画一把伞
  • 数据结构|并查集
  • 将infinigen功能集成到UE5--在ue里面写插件(python和c++)
  • 从数据到决策:安科瑞EIoT如何让每一度电“清晰可见”?
  • IF:22.7 InfoMat:一种用于智能假肢的机器学习辅助多功能触觉传感器
  • 考研408-计算机组成原理冲刺考点(4-5章)
  • 方案精讲:71页央国企信创化与数字化转型规划实施【附全文阅读】
  • Logback 日志框架详解
  • 【自然语言处理与大模型】LangChain大模型应用框架入门②
  • Selenium 与 Playwright:浏览器自动化工具的深度对比