MongoDB创建操作(Create)

本文将介绍MongoDB创建操作(Create)

创建或插入操作向集合添加新文档。如果集合当前不存在,则插入操作将创建集合。MongoDB提供了将文档插入集合的下列方法:

  • db.collection.insertOne() New in version 3.2

  • db.collection.insertMany() New in version 3.2

在MongoDB中,INSERT操作以单个集合为目标。MongoDB中的所有写操作都是单个文档级别上的原子操作。

MongoDB创建操作(Create)

插入单个文档

db.collection.insertOne() 将单个文档插入到集合中。下面的示例将一个新文档插入到 inventory 集合中。如果文档没有指定 _id 字段,MongoDB 将带有 objectid 值的 _id 字段添加到新文档中。

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

insertOne() 返回一个包含新插入的文档的_id字段值的文档。若要检索刚才插入的文档,请查询集合:

db.inventory.find({item:"canvas"})

插入多个文件

New in version 3.2.

db.collection.insertMany() 可以在集合中插入多个文档。将文档数组传递给方法。

下面的示例将三个新文档插入到 inventory 集合中。如果文档没有指定 _id 字段,MongoDB 将带有 objectid 值的 _id 字段添加到新文档中。

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() 返回包含新插入的Documents_id字段值的文档。若要检索插入的文档,请查询集合:

db.inventory.find({})

插入行为

创建集合

如果集合当前不存在,则插入操作将创建集合。

_id 字段

在 MongoDB 中,存储在集合中的每个文档都需要作为主键的唯一 _id 字段。

如果插入的文档省略了 _id 字段,MongoDB 驱动程序将自动为 _id 字段生成一个 objectid。

这也适用于通过 upsert:true 的 UPDATE 操作插入的文档。

原子性

MongoDB 中的所有写操作都是单个文档级别上的原子操作。

写确认

有了写关注点,您可以指定从 MongoDB 为写操作请求的确认级别。

插入方法

MongoDB提供了将文档插入集合的下列方法:

  • db.collection.insertOne():将单个文档插入到集合中。

  • db.collection.insertMany():将多个文档插入到集合中。

  • db.collection.insert():将单个文档或多个文档插入到集合中。

插入的附加方法

以下方法还可以向集合中添加新文档:

  • db.collection.update():当与 upsert: true 选项一起使用时。

  • db.collection.updateOne():当与 upsert: true 选项一起使用时。

  • db.collection.updateMany():当与 upsert: true 选项一起使用时。

  • db.collection.findAndModify():当与 upsert: true 选项一起使用时。

  • db.collection.findOneAndUpdate():当与 upsert: true 选项一起使用时。

  • db.collection.findOneAndReplace():当与 upsert: true 选项一起使用时。

  • db.collection.save()

  • db.collection.bulkWrite()

知人者智,自知者明。胜人者有力,自胜者强。——老子
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号