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

MongoDB——文档增删改查命令使用

MongoDB

文档增删改查

命令操作描述
db.collection.insert() db.collection.insert()将单个文档或多个文档插入到集合中
db.collection.insertOne()插入文档,3.2 版中的新功能
db.collection.insertMany()插入多个文档,3.2 版中的新功能
db.collection.update更新或替换与指定过滤器匹配的单个文档,或更新与指定 过 滤 器 匹 配 的 所 有 文 档 。 默 认 情 况 下 ,db.collection.update()方法更新单个文档。要更新多个文档,请使用 multi 选项。
db.collection.updateOne(<filter>,<update>, <options>)即使多个文档可能与指定的过滤器匹配,最多更新与指定的过滤器匹配的单个文档。 3.2 版中的新功能
db.collection.updateMany(<filter>,<update>, <options>)更新所有与指定过滤器匹配的文档。 3.2 版中的新功能
db.collection.replaceOne(<filter>,<update>, <options>)即使多个文档可能与指定过滤器匹配,也最多替换一个与指定过滤器匹配的文档。
db.collection.remove()删除单个文档或与指定过滤器匹配的所有文档
db.collection.deleteOne()即使多个文档可能与指定过滤器匹配,也最多删除一个与指定过滤器匹配的文档。 3.2 版中的新功能
db.collection.deleteMany()删除所有与指定过滤器匹配的文档。 3.2 版中的新功能
db.collection.find(query,projection)查询文档
db.collection.findOne()

文档插入

 db.col.insert({title:'高数', description: '极限', by: '圆老师', url: 'www.gaoshu.com', tags: ['difficult', 'yue'], likes: 100})
WriteResult({ "nInserted" : 1 })

查看

> db.col.find()
{ "_id" : ObjectId("5d80715e019abe974dac5164"), title:'高数', description: '极限', by: '圆老师', url: 'www.gaoshu.com', tags: ['difficult', 'yue'], likes: 100}

更新文档

插入

db.inventory.insertMany( [{ item: "canvas", qty: 100, size: { h: 28, w: 35.5, uom: "cm" }, status: "A" },{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },{ item: "mat", qty: 85, size: { h: 27.9, w: 35.5, uom: "cm" }, status: "A" },{ item: "mousepad", qty: 25, size: { h: 19, w: 22.85, uom: "cm" }, status: "P" },{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" }])

为了更新文档,MongoDB 提供了更新操作符(例如$set)来修改字段值。
要使用更新运算符,请将以下形式的更新文档传递给更新方法:

{<update operator>: { <field1>: <value1>, ... },<update operator>: { <field2>: <value2>, ... },...
}

如果字段不存在,则某些更新操作符(例如$set)将创建该字段。
下面的示例在 inventory 集合上使用 db.collection.updateOne()方法更新项目等于“ paper”的
第一个文档:

db.inventory.updateOne({ item: "paper" },{ $set: { "size.uom": "cm", status: "P" },$currentDate: { lastModified: true }}
)
  • 使用$set 运算符将 size.uom 字段的值更新为“ cm”,将状态字段的值更新为“ P”,

  • 使用$currentDate 运算符将 lastModified 字段的值更新为当前日期。 如果 lastModified字段不存在,则$currentDate 将创建该字段。

更新多个文档则将条件改成范围查询即可

查询

MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档

db.collection.find(query, projection)
  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值
db.collection.find({"item":"aa"}, {"_id":1, "status":1})

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法。

db.col.find().pretty()

指定条件查询

db.inventory.find( {} ) //所有文档
db.inventory.find( { status: "D" } ) //指定等于条件
db.inventory.find( { status: { $in: [ "A", "D" ] } } )   // 或条件
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )  // 或条件
db.inventory.find( { status: "A", qty: { $lt: 30 } } )  // and 条件
db.inventory.find( {status: "A",$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} ) // and + or 条件

其他查询参考https://www.mongodb.com/docs/manual/tutorial/query-documents/

删除文档

在执行 remove()函数前先执行 find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>}
)
  • query :(可选)删除的文档的条件。参考查询里query写法
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。

删除所有数据

db.inventory.deleteMany({})

即使从集合中删除所有文档,删除操作也不会删除索引。

http://www.lryc.cn/news/238050.html

相关文章:

  • 【日常总结】Swagger-ui 导入 showdoc (优雅升级Swagger 2 升至 3.0)
  • OpenCV C++ 图像 批处理 (批量调整尺寸、批量重命名)
  • RT-DETR手把手教程,注意力机制如何添加在网络的不同位置进行创新优化
  • qt treeview 删除节点
  • 【单词】【2019】
  • Java自动化驱动浏览器搜索稻香
  • php聊天室通讯系统常用的接口对接函数 curl、file_get_contents()、WebSocket、消息队列
  • SQL基础理论篇(九):存储过程
  • 申银万国期货通过ZStack Cube信创超融合一体机打造金融信创平台
  • SquareCTF-2023 Web Writeups
  • Docker-compose 安装mysql8
  • 分布式锁实现对比
  • Ubuntu 系统上使用 QQ 邮箱的 SMTP 服务器发送邮件,msmtp(已验证)
  • 笔记54:门控循环单元 GRU
  • 数据仓库高级面试题
  • 【OpenGauss源码学习 —— 列存储(ColumnTableSample)】
  • 【开源】基于JAVA的校园二手交易系统
  • C 语言结构体(struct)
  • Linux:zip包的压缩与解压
  • Linux 时区设置
  • Linux本地WBO创作白板部署与远程访问
  • leetcode刷题日记:205. Isomorphic Strings(同构字符串)
  • Autox.js和Auto.js4.1.1手机编辑器不好用我自己写了一个编辑器
  • docker logs 如何使用grep检索
  • 【教3妹学编辑-mysql】详解join(内连接、外连接、交叉连接等)
  • 云工作流 CloudFlow 重磅发布,流程式开发让云上应用构建更简单
  • 基于单片机GPS轨迹定位和里程统计系统
  • go 适配器模式
  • 蓝桥杯物联网_STM32L071_1_CubMxkeil5基础配置
  • 如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除