ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
不管是何种方式插入,都是有插入顺序的,最新插入的放在后面。 <br/> **1. `insert`方式插入** ```sql > db.customer.insert({name: "gyw", mobile: "12345678", email: "xxx@163.com"}) WriteResult({ "nInserted" : 1 }) # 查看是否插入成功 > db.customer.find() { "_id" : ObjectId("6050c17144f167bbabdf6aaf"), "name" : "gyw", "mobile" : "12345678", "email" : "xxx@163.com" } ``` **2. `save`方式插入** ```sql > db.customer2.save({name: "gyw", mobile: "12345678", email: "xxx@163.com"}) WriteResult({ "nInserted" : 1 }) > db.customer2.find() { "_id" : ObjectId("6050c34744f167bbabdf6ab0"), "name" : "gyw", "mobile" : "12345678", "email" : "xxx@163.com" } ``` <br/> **`insert`和`save`的比较:** <mark>相同点:</mark> (1)第一次插入数据时,不需要预先创建一个集合customer,插入数据时会自动创建。 (2)每次插入数据时如果没有显示的指定字段`_id`,则会默认创建一个主键`_id`。在关系数据库中主键大多数是数值类型,且是自动增长的序列。而MongoDB 中的主键值类型则为 Objectld 类型,这样设计的好处是能更好的支持分布式存储。 <mark>不同点:</mark> (1)`insert` 可以理解 就是 插入 操作;如果主键存在,则抛异常; (2)`save` 可以理解为 插入或 更新;如果 `_id` 的值存在就更新,不存在就插入。 <br/> **3. 结合js插入** MongoDB可以结合JavaScript代码。 ```sql > for(var i=1; i<=30; i++) db.customer.insert({id: i, name: "xi"+i, age: 100+i}) WriteResult({ "nInserted" : 1 }) > db.customer.find() { "_id" : ObjectId("6050ca0444f167bbabdf6ab1"), "id" : 1, "name" : "xi1", "age" : 101 } { "_id" : ObjectId("6050ca0444f167bbabdf6ab2"), "id" : 2, "name" : "xi2", "age" : 102 } { "_id" : ObjectId("6050ca0444f167bbabdf6ab3"), "id" : 3, "name" : "xi3", "age" : 103 } ``` <br/> **4. 单个插入** ``` insert、save、insertOne都是单个插入,不推荐使用insert插入。 ``` ```sql > db.customer.insertOne({name: "zhangsan", mobile: "13778899", email: "xxx@163.com"}) { "acknowledged" : true, "insertedId" : ObjectId("6050e1d544f167bbabdf6ad0") } ``` <br/> **5. `insertMany`批量插入** ```sql > db.customer.insertMany([ ... {name: "lisi", mobile: "456899343", email: "xxx@163.com"}, ... {name: "wangwu", mobile: "3479247798", email: "xxx@163.com"} ... ]) { "acknowledged" : true, "insertedIds" : [ ObjectId("6050e2f744f167bbabdf6ad1"), ObjectId("6050e2f744f167bbabdf6ad2") ] } ```