MongoDB文档插入
一、单个文档插入
db.<collection>.insertOne()
将单个文档插入到集合中。
下面的示例将一个新文档插入到清单(inventory
)集合中。 如果文档没有指定 _id 字段,MongoDB 会将带有 ObjectId 值的 _id 字段添加到新文档中。
//将一个文档插入inventory集合中
db.inventory.insertOne(
{
item: "canvas", qty: 100, tags: ["cotton"], size: {
h: 28, w: 35.5, uom: "cm" } }
)
insertOne()
返回一个包含新插入文档的 _id
字段值的文档。
> db.inventory.insertOne(
... {
item: "canvas", qty: 100, tags: ["cotton"], size: {
h: 28, w: 35.5, uom: "cm" } }
... )
{
"acknowledged" : true,
"insertedId" : ObjectId("62f4575ea1b95269b09767bc") //新插入文档的_id
}
要检索您刚刚插入的文档,请查询集合:
> db.inventory.find( {
item: "canvas" } )
{
"_id" : ObjectId("62f4575ea1b95269b09767bc"), "item" : "canvas", "qty" : 100, "tags" : [ "cotton" ], "size" : {
"h" : 28, "w" : 35.5, "uom" : "cm" } }
二、多个文档插入
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() 返回一个包含新插入的文档 _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" } }
... ])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("62f45ac0a1b95269b09767bd"), //新插入文档的_id
ObjectId("62f45ac0a1b95269b09767be"),
ObjectId("62f45ac0a1b95269b09767bf")
]
}
要检索插入的文档,请查询集合:
> db.inventory.find( {
} )
{
"_id" : ObjectId("62f4575ea1b95269b09767bc"), "item" : "canvas", "qty" : 100, "tags" : [ "cotton" ], "size" : {
"h" : 28, "w" : 35.5, "uom" : "cm" } }
{
"_id" : ObjectId("62f45ac0a1b95269b09767bd"), "item" : "journal", "qty" : 25, "tags" : [ "blank", "red" ], "size" : {
"h" : 14, "w" : 21, "uom" : "cm" } }
{
"_id" : ObjectId("62f45ac0a1b95269b09767be"), "item" : "mat", "qty" : 85, "tags" : [ "gray" ], "size" : {
"h" : 27.9, "w" : 35.5, "uom" : "cm" } }
{
"_id" : ObjectId("62f45ac0a1b95269b09767bf"), "item" : "mousepad", "qty" : 25, "tags" : [ "gel", "blue" ], "size" : {
"h" : 19, "w" : 22.85, "uom" : "cm" } }
三、文档插入行为
3.1 集合创建
如果集合当前不存在,则插入操作将创建该集合。
3.2 _id 属性
在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id 字段作为主键。 如果插入的文档省略了 _id 字段,MongoDB 驱动程序会自动为 _id 字段生成一个 ObjectId。
这也适用于通过带有 upsert: true
的更新操作插入的文档。
3.3 原子性
MongoDB中的所有写入操作在单个文档的级别上都是原子的。
3.4 写确认
With write concerns, you can specify the level of acknowledgement requested from MongoDB for write operations.(待补充)
更多文档插入知识: