MongoDB 基础系列十五:增删查改 CRUD 之 insert

前言

此篇博文是 Mongdb 基础系列之一;

本文为作者的原创作品,转载需注明出处;

简介

本文主要是增对特定语言如何执行插入操作的讲解;官网上对各个热门语言如何对 MongoDB 执行 insert 操作分别作了比较详细的描述;这里呢,因为 mongo shell 是在平时调试、检查、运维最常用的操作,所以,笔者这里重点考察如何通过 mongo shell 来进行 insert 操作;要注意的是,Mongo Shell 是通过 javascript 实现的交互式应用;

Insert a Single Document

New in version 3.2.

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

注意,插入过程中,如果没有指定 _id,那么 MongoDB 会自动的为其生成一个;插入成功以后,将会返回一个 document,其中包含了当前成功插入的 document 的 _id;更多细节,查看 db.collection.insertOne() reference

可以通过如下的方式来查询刚插入的 document,

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

Insert Multiple documents

New in version 3.2.

1
2
3
4
5
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 值,系统将会自动的生成;

insertMany() returns a document that includes the newly inserted documents _id field values. See the reference for an example.

Insert Behavior

_id Field

In MongoDB, each document stored in a collection requires a unique _id field that acts as a primary key. If an inserted document omits the _id field, the MongoDB driver automatically generates an ObjectId for the _id field.

This also applies to documents inserted through update operations with upsert: true.

Atomicity

MongoDB 的所有写入事务都是作用在一个 document 之上的;Atomicity and Transactions for more information;

Write Acknowledgement

With write concerns, you can specify the level of acknowledgement requested from MongoDB for write operations. For details, see Write Concern.

References

https://docs.mongodb.com/manual/tutorial/insert-documents/