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 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号