当前位置: 首页 > 后端技术 > Node.js

第三个mongoose系列create创建文档

时间:2023-04-03 19:18:51 Node.js

save()Model.prototype.save([options][,callback])Document.prototype.save([options][,callback])保存的文档不包含_id字段,然后插入一个新文档,类似于insert()。如果要保存的文档包含_id字段,则更新文档,相当于update(filter,update,{upsert:true})待保存文档包含_id字段(必须是ObjectId的形式),但是_id的值在集合中不存在,则插入一个新文档,_id字段使用文档中的值,不生成新的。letdoc=newAuthorModel({name:'dora'});//模型实例是documentletdata=awaitdoc.save();datainstanceofAuthorModel//truedatainstanceofmongoose.Document//truecallback返回插入数据库的文档,{}形式。如果没有传递回调,则返回一个承诺。create()Model.create(docs[,options][,callback])将一个或多个文档保存到数据库的快捷方式。create(docs)为docs中的每个文档执行MyModel(doc).save()。docs可以是[]数组形式或{}对象形式。未在模式中定义的字段在创建时不会添加到数据库中。模式中具有默认值的字段会自动添加到数据库中。类型为Array的字段的默认值为[]一个空数组。如果模式中没有required为true的字段,则会报错。letdata=awaitModel.create(doc,doc)letdata=awaitModel.create([doc,doc])callback如果没有传入callback,则返回promise。以{}的形式创建一个item,并以{}的形式返回带有_id的数据。以[]的形式创建一个item,并以[]的形式返回带有_id的数据。无论以何种形式创建多个项目,都以[]数组的形式返回数据。insertMany()Model.insertMany(docs[,options][,callback])这个方法比create()方法更快,因为它只向服务器发送一个操作,而不是每个文档一个。Mongoose在将insertMany发送到MongoDB之前验证每个文档。因此,如果文档有验证错误,除非将ordered选项设置为false,否则不会保存任何文档。doc{}格式,只插入一个文档。[]形式,可以插入多个文档。optionsordered:默认为true(有序插入),即遇到第一个错误就会失败并返回error;如果为false(无序插入),则插入所有可以正常插入的文档,然后返回错误信息。rawResult:默认false,返回插入数据库的文档,如果为true,返回mongoose原生结果。callback如果不传入callback,则返回promise。无论数据是以[]形式还是{}形式创建的,都会返回[]数组形式的结果。