新增数据

93 阅读2分钟

Model.create() 将一个或多个文档保存到数据库的快捷方式

Model.insertMany() 验证文档数组并将其插入MongoDB(如果它们都有效)的快捷方式

Model.bulkWrite() 发送多个insertOne,updateOne,updateMany,replaceOne,deleteOne,和/或deleteMany操作,以在一个命令MongoDB服务器。这比发送多个独立操作(例如,如果使用create())要快,因为bulkWrite()到MongoDB只有一次往返。

Model.create()

将一个或多个文档保存到数据库的快捷方式

例:

// 传入文档数据以及回调函数
Candy.create({ type: 'jelly bean' }, { type: 'snickers' }, function (err, jellybean, snickers) {
  if (err) // ...
});

// 传入一个数组文档以及回调函数
var array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, candies) {
  if (err) // ...

  var jellybean = candies[0];
  var snickers = candies[1];
  // ...
});

// 回调是可选的;如果愿意,请使用返回的promise
var promise = Candy.create({ type: 'jawbreaker' });
promise.then(function (jawbreaker) {
  // ...
})
    
// 常用方式
Candy.create({ type: 'jawbreaker' });
.then(res=>{})  
.catch(err=>{})

Model.insertMany()

验证文档数组并将其插入MongoDB(如果它们都有效)的快捷方式。此函数比.create()快,因为它只向服务器发送一个操作,而不是为每个文档发送一个操作。Mongoose总是在向MongoDB发送insertMany之前验证每个文档。因此,如果一个文档存在验证错误,则不会保存任何文档,除非将ordered选项设置为false。

  • [options.ordered «Boolean» = true] 如果为true,将在遇到第一个错误时快速失败。如果为false,则将插入它可以插入的所有文档,并在以后报告错误。ordered=false的insertMany()称为“unordered”insertMany()。
  • [options.rawResult «Boolean» = false]如果为false,则返回的承诺将解析为通过mongoose文档验证的文档。如果为false,则将从MongoDB驱动程序返回原始结果,并且mongoose属性包含validationErrors(如果这是无序insertMany)。

例:

var arr = [{ name: 'Star Wars' }, { name: 'The Empire Strikes Back' }];
Movies.insertMany(arr, function(error, docs) {});

Model.bulkWrite()

发送多个**insertOne****updateOne****updateMany****replaceOne****deleteOne**,和/或**deleteMany**操作,以在一个命令MongoDB服务器。这比发送多个独立操作(例如,如果使用**create()**)要快,因为**bulkWrite()**到MongoDB只有一次往返。

例:

Character.bulkWrite([
  {
    insertOne: {
      document: {
        name: 'Eddard Stark',
        title: 'Warden of the North'
      }
    }
  },
  {
    updateOne: {
      filter: { name: 'Eddard Stark' },
      // If you were using the MongoDB driver directly, you'd need to do
      // `update: { $set: { title: ... } }` but mongoose adds $set for
      // you.
      update: { title: 'Hand of the King' }
    }
  },
  {
    deleteOne: {
      {
        filter: { name: 'Eddard Stark' }
      }
    }
  }
]).then(handleResult);