node.js 实战——mongoDB 续一

mongoDB的基本指令

进入mongodb

bash 复制代码
mongo

显示当前的所有数据库

bash 复制代码
show dbs 
# 或者
show databases

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

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

bash 复制代码
use 数据库名

显示当前数据库

bash 复制代码
db

显示数据库中所有集合

bash 复制代码
show collections

数据库的CRUD的操作

Create(插入数据)

🔹 单条插入 insertOne()

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

🔹 多条插入 insertMany()

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

比如:

bash 复制代码
db.users.insertMany([...], { ordered: false })

Read(查询数据)

🔹 查询单条数据 findOne()

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

🔹 查询多条数据 find()

bash 复制代码
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" 的人:

bash 复制代码
db.users.find({ city: { $in: ["Beijing", "Shanghai"] } })

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

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

🔹 排序 sort()

按年龄升序排列:

bash 复制代码
db.users.find().sort({ age: 1 })

按年龄降序排列:

bash 复制代码
db.users.find().sort({ age: -1 })

🔹 分页 skip() + limit()

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

bash 复制代码
db.users.find().skip(10).limit(10)

Update(更新数据)

🔹 更新单条数据 updateOne()

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

🔹 更新多条数据 updateMany()

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

🔹 upsert(如果没有就插入)

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

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

🔹 更新字段数组 push/addToSet

往数组字段加元素:

bash 复制代码
db.users.updateOne(
  { name: "Alice" },
  { $push: { hobbies: "reading" } }
)

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

bash 复制代码
db.users.updateOne(
  { name: "Alice" },
  { $addToSet: { hobbies: "music" } }
)

Delete(删除数据)

🔹 删除单条数据 deleteOne()

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

🔹 删除多条数据 deleteMany()

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

📌 特别注意事项

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

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

bash 复制代码
// 插入新用户
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

安装

bash 复制代码
npm i mongoose

导入mongoose

javascript 复制代码
const mongoose = require('mongoose');

链接数据库

javascript 复制代码
mongoose.connect(
    "mongodb://localhost:27017/test",
)

设置回调

javascript 复制代码
mongoose.connection.once("open", ()=>{

})

mongoose.connection.on("error", (err)=>{

})

mongoose.connection.on("close", ()=>{

})
相关推荐
数据库生产实战43 分钟前
Oracle升级避坑指南:APEX卸载后sys.htmldb_system无效对象的处理方法
数据库·oracle
大布布将军2 小时前
⚡后端安全基石:JWT 原理与身份验证实战
前端·javascript·学习·程序人生·安全·node.js·aigc
闲云一鹤2 小时前
【工具篇】使用 nvm 进行 node 版本管理
前端·npm·node.js
悟能不能悟2 小时前
Oracle 如何查找function信息
数据库·oracle
zhengfei6113 小时前
开源网站安全监测系统—Libra
数据库·安全·oracle
小白咚3 小时前
npm在文件下输入运行命令,授权限制问题window
前端·npm·node.js
GISERLiu3 小时前
Mapper 怎么能找到实体和数据库
数据库·oracle·mybatis
飞函安全3 小时前
MongoBleed:MongoDB的秘密漏洞
数据库·安全·mongodb
黄团团3 小时前
Oracle内置DBMS_CRYPTO加密包实现AES对称加密和解密
数据库·oracle
程序员王天4 小时前
SQLite 索引智能构建:从每次启动30秒到秒开
前端·oracle·electron·sqlite