最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

猫鼬更新或插入许多文档

IT培训 admin 14浏览 0评论

猫鼬更新或插入许多文档

我正在尝试使用最新版本的猫鼬来插入对象数组,或者如果已经存在相应的产品ID,则进行更新。我无法终生找出正确的使用方法(bulkWrite,updateMany等),而且似乎无法弄清楚语法而不会出错。例如,我正在尝试

Product.update({}, products, { upsert : true, multi : true }, (err, docs) => console.log(docs))

这将引发错误DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead. MongoError: '$set' is empty. You must specify a field like so: {$set: {<field>: ...}

并且使用updateMany只会给我$ set错误。我似乎找不到使用此方法的人的任何示例,只是想知道是否有人可以向我提供如何正确使用此方法的示例。

要清楚,我生成了一个对象数组,然后将它们插入到数据库中,或者更新条目(如果已经存在)。我要匹配的字段称为pid。任何提示或建议,将不胜感激!

编辑:

我的产品架构

const productSchema = new mongoose.Schema({
  title : String,
  image : String,
  price_was : Number,
  price_current : {
    dollars : String,
    cents : String
  },
  price_save_percent : String,
  price_save_dollars : String,
  price_save_endtime : String,
  retailer : String
})

const Product = mongoose.model('Product', productSchema)

[正在传递的products数组的示例

[
  {   
  title: 'SOME PRODUCT',
  image: '',
  price_was: '139.99',
  price_current: { dollars: '123', cents: '.49' },
  price_save_percent: '12%',
  price_save_dollars: '16.50',
  price_save_endtime: null,
  pid: 'VB78237321',
  url: '' 
  },
  { ... },
  { ... }
]
回答如下:

您基本上需要bulkWrite操作

您要使用的数组更新

bulkWrite

查询批量更新

const products = [
  {   
    title: 'SOME PRODUCT',
    image: '',
    price_was: '139.99',
    price_current: { dollars: '123', cents: '.49' },
    price_save_percent: '12%',
    price_save_dollars: '16.50',
    price_save_endtime: null,
    pid: 'VB78237321',
    url: ''
  }
]

猫鼬更新或插入许多文档

我正在尝试使用最新版本的猫鼬来插入对象数组,或者如果已经存在相应的产品ID,则进行更新。我无法终生找出正确的使用方法(bulkWrite,updateMany等),而且似乎无法弄清楚语法而不会出错。例如,我正在尝试

Product.update({}, products, { upsert : true, multi : true }, (err, docs) => console.log(docs))

这将引发错误DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead. MongoError: '$set' is empty. You must specify a field like so: {$set: {<field>: ...}

并且使用updateMany只会给我$ set错误。我似乎找不到使用此方法的人的任何示例,只是想知道是否有人可以向我提供如何正确使用此方法的示例。

要清楚,我生成了一个对象数组,然后将它们插入到数据库中,或者更新条目(如果已经存在)。我要匹配的字段称为pid。任何提示或建议,将不胜感激!

编辑:

我的产品架构

const productSchema = new mongoose.Schema({
  title : String,
  image : String,
  price_was : Number,
  price_current : {
    dollars : String,
    cents : String
  },
  price_save_percent : String,
  price_save_dollars : String,
  price_save_endtime : String,
  retailer : String
})

const Product = mongoose.model('Product', productSchema)

[正在传递的products数组的示例

[
  {   
  title: 'SOME PRODUCT',
  image: '',
  price_was: '139.99',
  price_current: { dollars: '123', cents: '.49' },
  price_save_percent: '12%',
  price_save_dollars: '16.50',
  price_save_endtime: null,
  pid: 'VB78237321',
  url: '' 
  },
  { ... },
  { ... }
]
回答如下:

您基本上需要bulkWrite操作

您要使用的数组更新

bulkWrite

查询批量更新

const products = [
  {   
    title: 'SOME PRODUCT',
    image: '',
    price_was: '139.99',
    price_current: { dollars: '123', cents: '.49' },
    price_save_percent: '12%',
    price_save_dollars: '16.50',
    price_save_endtime: null,
    pid: 'VB78237321',
    url: ''
  }
]

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论