插入操作操作是Mongodb中添加数据的基本方法,这用主要有两种方法进行插入:
- insertOne:这个是对集合进行单条数据插入
- insertMany:这个是对集合进行多条数据进行插入
##单条插入
> db.one.insertOne({"name":"Oner"}) { "acknowledged" : true, "insertedId" : ObjectId("62513012f4a74899d0aa416e") }
##这也是一个单条插入
> db.one.insertOne({"name":"second",age:20}) { "acknowledged" : true, "insertedId" : ObjectId("625130f9f4a74899d0aa4170") } > > db.one.find(); { "_id" : ObjectId("62513012f4a74899d0aa416e"), "name" : "Oner" } { "_id" : ObjectId("625130b1f4a74899d0aa416f"), "name" : "zero", "age" : 20 } { "_id" : ObjectId("625130f9f4a74899d0aa4170"), "name" : "second", "age" : 20 } >
从上面两个单条插入语句可以看出,集合中的每个文档(行)可以有属性(字段)不同,这个和关系型数据有根本的区别
再来看看多条插入
> db.one1.insertMany([{"name":"one"},{"name":"two"},{"name":"three"}]) { "acknowledged" : true, "insertedIds" : [ ObjectId("62513228f4a74899d0aa4171"), ObjectId("62513228f4a74899d0aa4172"), ObjectId("62513228f4a74899d0aa4173") ] } > db.one1.find(); { "_id" : ObjectId("62513228f4a74899d0aa4171"), "name" : "one" } { "_id" : ObjectId("62513228f4a74899d0aa4172"), "name" : "two" } { "_id" : ObjectId("62513228f4a74899d0aa4173"), "name" : "three" }
上面的多条插入使用了数组方式,挺有意思的。。。
这里多条数据插入(insertMany)可以很快地提高插入速度。。。如果要将多个文档插入单个集合中,那么insertMany将非常有用。。。
这里补充一个很重要的知识点就是多个文档进行插入时,如果中途某个文档发生了某种类型的错误,那么接下来会发生什么取决于所选择的是有序操作还是无序操作。。。
这里就可以执行insertMany的第二个参数。将选项文档中的"ordered"键指定为true,可以确保按照有序操作,指定为false则允许mongdb重新排列插入顺序以提高性能。如果没有特别指定,则默认是有序插入。对于有序插入,插入顺序由传递给insertMany的数据组进行定义。如果一个文档产生了插入错误,则数组中在此之后的文档都将不会被插入到集合中。对于无序插入,Mongodb将尝试插入所有文档,而不管某些插入是否产生错误。。。