Mongoose 更新或插入许多文档

2024-04-29

我正在尝试使用最新版本的 mongoose 插入对象数组,或者更新相应的产品 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。任何提示或建议将不胜感激!

EDIT:

我的产品架构

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 https://docs.mongodb.com/manual/reference/method/db.collection.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: ''
  }
]

批量更新查询

Model.bulkWrite(
  products.map((product) => 
    ({
      updateOne: {
        filter: { retailer : product.pid },
        update: { $set: product },
        upsert: true
      }
    })
  )
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose 更新或插入许多文档 的相关文章

随机推荐

  • 如何在C中将文件中的数据读取到二维数组中?

    我正在尝试读取文件并打印出文件中的内容 文件中的数据如下所示 由 100 行和 10 列组成 1 0 53 1 1 1 0 0 8 1 0 5 0 这是我尝试过的 include
  • Linq:方法无法转换为存储表达式

    我目前正在尝试限制哪些用户可以访问哪些组 并通过使用 linq 来做到这一点 当我将相关组添加到视图时 出现了我的问题 我不断收到的错误是 LINQ to Entities 无法识别方法 System String GetUserId Sy
  • 将 linq 查询转换为字符串数组 - C#

    将单列 linq 查询转换为字符串数组的最有效方法是什么 private string WordList DataContext db new DataContext var list from x in db Words orderby
  • 三星Android BLE多次读/写

    在 Samsung 4 2 到 4 3 BLE 应用程序迁移指南中 http developer samsung com ble http developer samsung com ble 它说 堆栈和 F W 的同步性质没有受到影响 那
  • 如何有效地将许多文件移动到新服务器?

    我正在更换托管提供商 需要将数百万个上传的文件传输到新服务器 所有文件都位于同一目录中 是的 你读对了 过去我这样做过 压缩源服务器中的所有文件 scp到新服务器的 zip Unzip Move directory to appropria
  • ViewPager 拦截所有 x 轴 onTouch 事件。如何禁用?

    Scope 有一个包含两个片段的viewpager 其中一个片段有一个布局 用于监听 X 轴上的 onTouch 变化 Problem 当沿 X 轴触摸和滑动时 布局几乎不会获取所有 Action Move 事件 看来 viewpager
  • 对shinyTable进行子集化

    我目前正在玩shinyTable这是一个shinyHandsonTable 的兼容实现 https github com trestletech shinyTable https github com trestletech shinyTa
  • 有选择地中止通过 Extjs Direct 代理发送的 ajax 请求

    我有一个商店 它使用 Extjs 直接代理从列表中加载 w r t 项目 proxy type direct api read bomManagementAction bomQuickDetails 响应显示在网格面板中 如果选择的项目数量
  • 在 Chrome 中打印背景颜色

    我正在尝试在 Chrome 中打印 PHP 生成的文档 在浏览器上看起来不错链接到我要打印的页面 http www abbeysoft co uk adi 241 quote php但是我的打印机无法打印任何彩色背景 有人可以提供任何建议吗
  • 哪些用例需要 #define 而不使用令牌字符串?

    我遇到过 define预处理器指令之前在学习C时 然后在我读过的一些代码中也遇到过它 但除了使用它来明确替换常量和定义宏之外 我还没有真正理解它在没有 主体 或标记字符串的情况下使用的特殊情况 以这一行为例 define OCSTR X 就
  • ffmpeg创建RTP流

    我正在尝试使用 ffmpeg 进行编码和流式传输 libavcodec libavformat MSVC x64 with Zeranoe builds 这是我的代码 很大程度上改编自编码示例 删除了错误处理 include stdafx
  • GCM 条款和条件

    有谁知道在哪里可以找到有关哪些内容可以通过 GCM 通知发送以及哪些内容不可以发送的条款和条件 我似乎在任何地方都找不到任何文档 当您注册开设 Google API 帐户时 您会得到这些条款和条件 https developers goog
  • 包java.time不存在,jdk1.8

    嗯 我刚刚开始从事代号工作 我对 Java 有相当不错的经验 我的代码一切都很好 没有任何问题 但在编译时我得到了这个 error package java time does not exit import java time Local
  • 如何在同一个项目中连接两个数据库MySQL和MongoDB?是否可以?

    目前我正在使用 Hibernate MySQL 和 Spring 配置对我来说运行良好 但是一旦我配置了另一个配置 mongo config xml 文件并尝试使用 mongodb 运行测试用例 它就显示创建名为 的 bean 时出错从第一
  • EPERM:不允许操作,mkdir 'C:\Program Files\nodejs\node_modules\.staging

    我正在尝试在我的项目上运行 npm install 但它显示 EPERM 不允许操作 mkdir C Program Files nodejs node modules staging 我没有 root 管理访问权限 我在我的系统中以本地用
  • ? LIKE(列 || '%')

    我可以有这样的条件吗 SELECT FROM table WHERE LIKE column 哪里的 是一个字符串参数值 例如 这些参数值 当列等于时应返回 true admin products admin products 1 admi
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • Mongoose 更新或插入许多文档

    我正在尝试使用最新版本的 mongoose 插入对象数组 或者更新相应的产品 ID 是否已存在 我一生都无法找出正确的使用方法 bulkWrite updateMany 等 而且我似乎无法在不出现错误的情况下找出语法 例如 我正在尝试 Pr