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对写操作进行确认的级别。

相关推荐
葫芦和十三6 小时前
图解 MongoDB 18|复制集拓扑:Primary、Secondary 和 Arbiter 的分工
后端·mongodb·面试
葫芦和十三13 小时前
图解 MongoDB 15|journal 与持久化:写入怎么不丢,崩溃怎么恢复
后端·mongodb·面试
葫芦和十三13 小时前
图解 MongoDB 16|压缩:snappy、zstd 和 zlib 的取舍
后端·mongodb·面试
笃行35015 小时前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行35015 小时前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行35015 小时前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
葫芦和十三1 天前
图解 MongoDB 13|WiredTiger 存储引擎:B-tree、页和 checkpoint 三件套
后端·mongodb·agent
葫芦和十三1 天前
图解 MongoDB 14|Cache 与淘汰:WiredTiger 的内存治理
后端·mongodb·面试
SelectDB2 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc