MongoDB CRUD操作:插入文档

MongoDB CRUD操作:插入文档

文章目录

在MongoDB中插入文档的集中方式:

  • 使用编程语言提供的驱动程序,在应用中调用API进行插入。
  • 使用MongoDB Atlas UI插入文档。
  • 使用MongoDB Compass、mongosh。
  • 使用其他第三方工具。

使用MongoDB Atlas UI插入文档

要使用MongoDB Atlas UI插入文档可以按照下面的步骤进行:

  1. 打开集合

    • 打开MongoDB Atlas UI,点击侧边栏的Database
    • 找到对应的数据库实例,点击Browse Collections
    • 在左侧的导航面板选择数据库
    • 在左边的导航面板选择集合
  2. 添加文档

    • 点击Insert Document
    • 点击**{}**图标,打开JSON视图
    • 将文档数组粘贴到文本输入框,例如,下面的JSON文本可以创建4个文档,每个文档都有3个字段:
    json 复制代码
    [
    { "prodId": 100, "price": 20, "quantity": 125 },
    { "prodId": 101, "price": 10, "quantity": 234 },
    { "prodId": 102, "price": 15, "quantity": 432 },
    { "prodId": 103, "price": 17, "quantity": 320 }
    ]
  3. 点击插入

MongoDB Atlas 将文档添加到集合中。

插入单个文档

使用db.collection.insertOne()可以向集合插入一个文档。下面的例子向inventory集合中插入一个文档。如果文档没有指定_id字段,Mongo DB会使用ObjectId给插入的文档自动生成_id字段。

js 复制代码
db.inventory.insertOne(
   { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

insertOne()返回一个包含新插入文档_id字段值的文档。如果要查看刚插入的文档,可以使用find()进行查询:

js 复制代码
db.inventory.find( { item: "canvas" } )

插入多个文档

db.collection.insertMany()可以将多个文档插入到集合。需要将文档数组传递给insertMany()

下面的示例将三个新文档插入inventory集合。如果文档未指定_id字段,MongoDB 会为每个文档自动增加一个ObjectId类型的_id字段。

js 复制代码
db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
   { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
   { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

insertMany() 返回一个包含新插入文档 _id 字段值的文档。要检索插入的文档,可以使用find()查询集合:

js 复制代码
db.inventory.find( {} )

插入行为

自动创建集合

如果插入操作时目标集合不存在,MongoDB会自动创建该集合。

_id字段

在MongoDB中,集合中的每个文档必须要有唯一的_id字段,并且作为主键索引。如果插入的文档缺少_id字段,MongoDB驱动会自动产生一个ObjectId作为_id字段的值。这个规则同样适用于更新操作时的upset:true时。

原子性

在MongoDB中,单个文档的写操作具有原子性。

写确认

通过写关注,可以指定MongoDB对写操作进行确认的级别。

相关推荐
WeiQ_2 小时前
解决phpstudy 8.x软件中php8.2.9没有redis扩展的问题
数据库·redis·缓存
DashVector7 小时前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
KYGALYX7 小时前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
檀越剑指大厂8 小时前
金仓KReplay:定义数据库平滑迁移新标准
数据库
努力成为一个程序猿.8 小时前
【Flink】FlinkSQL-动态表和持续查询概念
大数据·数据库·flink
毕设十刻9 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
liliangcsdn9 小时前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql
Java爱好狂.10 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员
Elastic 中国社区官方博客10 小时前
通过混合搜索重排序提升多语言嵌入模型的相关性
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索