使用 mongoose 在 MongoDB 中批量更新插入

2023-11-30

是否有任何选项可以使用猫鼬执行批量更新插入?那么基本上有一个数组并插入每个元素(如果不存在)或更新它(如果存在)? (我正在使用海关_ids)

当我使用时.insertMongoDB 针对重复键返回错误 E11000(应更新)。不过,插入多个新文档效果很好:

var Users = self.db.collection('Users');

Users.insert(data, function(err){
            if (err) {
                callback(err);
            }
            else {
                callback(null);
            }
        });

Using .save返回参数必须是单个文档的错误:

Users.save(data, function(err){
   ...
}

这个答案建议没有这样的选项,但它是特定于 C# 的,而且已经有 3 年历史了。所以我想知道是否有任何选择可以使用猫鼬来做到这一点?

谢谢你!


具体来说不是“猫鼬”,或者至少在撰写本文时还没有。从 2.6 版本开始,MongoDB shell 实际上使用“批量操作API”就像所有通用辅助方法一样,“在引擎盖下”。在它的实现中,它首先尝试执行此操作,如果检测到旧版本服务器,则会“回退”到旧版实现。

所有猫鼬方法“当前”都使用“遗留”实现或写关注响应和基本遗留方法。但有一个.collection来自任何给定猫鼬模型的访问器,本质上是从底层“节点本机驱动程序”访问“集合对象”,猫鼬是在该驱动程序上实现的:

 var mongoose = require('mongoose'),
     Schema = mongoose.Schema;

 mongoose.connect('mongodb://localhost/test');

 var sampleSchema  = new Schema({},{ "strict": false });

 var Sample = mongoose.model( "Sample", sampleSchema, "sample" );

 mongoose.connection.on("open", function(err,conn) { 

    var bulk = Sample.collection.initializeOrderedBulkOp();
    var counter = 0;

    // representing a long loop
    for ( var x = 0; x < 100000; x++ ) {

        bulk.find(/* some search */).upsert().updateOne(
            /* update conditions */
        });
        counter++;

        if ( counter % 1000 == 0 )
            bulk.execute(function(err,result) {             
                bulk = Sample.collection.initializeOrderedBulkOp();
            });
    }

    if ( counter % 1000 != 0 )
        bulk.execute(function(err,result) {
           // maybe do something with result
        });

 });

主要的问题是“猫鼬方法”实际上意识到连接可能尚未真正建立,并“排队”直到连接完成。您正在“深入研究”的本机驱动程序不会做出这种区分。

因此,您确实必须意识到连接是以某种方式或形式建立的。但只要您小心所做的事情,您就可以使用本机驱动程序方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mongoose 在 MongoDB 中批量更新插入 的相关文章

  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • React Native - 无法从“index.js”解析模块“@babel/runtime/helpers/interopRequireDefault”

    正如中提到的无法解析模块 babel runtime helpers interopRequireDefault https stackoverflow com questions 52486219 unable to resolve mo
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • Node js,通过管道将 pdfkit 传输到内存流

    我在用pdfkit https github com devongovett pdfkit在我的节点服务器上 通常创建 pdf 文件 然后将它们上传到 s3 问题是 pdfkit 示例将 pdf 文档通过管道传输到节点写入流 该节点写入流将
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • WPF 中的高性能绘图控制

    我正在做一些工作 我需要开发一个控件 它应该是一个简单的图表 显示几个点和两条边 我的问题是我需要显示最多 16k 点 更新率为 30 Hz 有没有人做过类似的事情 有什么建议吗 例如 是否从 FrameworkElement 或 Cont
  • Swift:泛型重载,“更专业”的定义

    在下面的例子中 为什么foo f 叫暧昧 我知道第二个重载也可以适用P 但为什么第一个不被认为更专业 因此是更好的匹配 func foo
  • 为什么原来的任务在继续其他任务时被取消了?

    自从我投入 C 编程以来已经 4 周了 确实很有趣 但是 我感到很痛苦 当我开始任务时HttpClient PostAsync 单独使用 效果很好 但如果我继续做其他事情 原来的任务将被取消 而不是由我取消 看起来该任务对继续进行并不满意
  • PHP - 间接修改重载属性

    我知道这个问题已经被问过好几次了 但他们都没有提供解决方法的真正答案 也许有一个适合我的具体情况 我正在构建一个使用魔术方法的映射器类 get 延迟加载其他对象 它看起来像这样 public function get index if is
  • 使用数组过滤对象数组,无需嵌套循环js

    我一直在试图找出在不使用嵌套循环的情况下过滤对象数组的最干净的方法 我找到了这个post using filter关于使用另一个数组过滤数组的函数 但我无法弄清楚如何使用相同的模式实际访问对象数组中的对象内的正确键 给定以下对象数组 tec
  • Kendo UI 重新加载树视图

    我通过 ajax 使用 kendo ui 加载一个复杂的树视图 因为我需要通过一个请求加载树 工作正常 document ready function buildTree function buildTree getJSON admin g
  • 使用 jQuery 延迟更改 insideHTML 文本

    所以我有一个非常简单的按钮 基本上可以打开和关闭表单 我们将在我们的网站上使用它 因为我们正在进行更新并希望在任何页面上提供反馈 这是我迄今为止拥有的 jQuery
  • 具有不同时间戳的重复条目

    我有一个按姓名列出的客户表 Customer SCD在 SQL 中 我其中有 3 列 Customer Name Customer ID Customer TimeStamp 该表中存在不同的重复条目时间戳 例如 ABC 1 2012 12
  • 如何在 ggplot2 中绘制(复杂的)堆叠条形图,无需复杂的手动数据聚合

    我想绘制一个 多面的 堆叠条形图 其中 X 轴以百分比表示 频率标签也显示在条中 经过相当多的工作并查看了 stackoverflow 上的许多不同问题后 我找到了如何使用 ggplot2 解决此问题的解决方案 但是 我不直接使用 ggpl
  • 多维数组转 CSV

    我得到这个数组 array cat gt array 0 gt array name gt Sales url gt http videos volkswagen nl videos videos subs gt array 0 gt ar
  • jQuery toggle() 方法的最佳替代方法?

    jQuery 不推荐使用toggle 方法 这是一种很容易切换类的方法 在搜索 stackoverflow 时 我发现了各种其他方法来完成相同的任务 支持 eventData 的 jQuery toggle 方法的替代方法 哪个 jQuer
  • 为什么在 char 变量中存储 255 在 C 中其值为 -1?

    我正在看一本C书 作者提到了一段文字 if ch a char variable is a signed type then storing 255 in the ch variable gives it the value 1 谁能详细说
  • UTC 时间重置为 2000-01-01 (ruby)。如何防止时间重置?

    我正在使用任务和电子表格 gem 将 Excel 电子表格读入我的数据库 我正在阅读的专栏之一是 start time 为此 我将形成一个值数组 然后逐一传入每个数组值 cnum array for start times sheet1 e
  • ASP.Net MVC 更新下拉选择上的 ViewModel 已更改

    起初我对网络开发完全是新手 我正在尝试开发一个由单个页面组成的 Web 应用程序 我从一个空项目开始尝试遵循 mvc 模式 为了填充我的视图 我通过我的 HomeController 将 ViewModel 传递到我的 Home 视图 现在
  • 如何使用 Plotly 制作带有滑块的分区统计图?

    我正在重新创建等值线示例并尝试添加一个滑块 拖动该滑块时 该滑块会逐年变化 另一位用户问了一个类似的问题但他们没有收到回复 我做了更多搜索并找到了一个example用户生成了额外年份的随机值并创建了一个滑块 但它是用 JavaScript
  • maven-ear-plugin 和 JBoss AS 7

    我正在迁移到 JBoss AS 7 并使用 maven 构建 在我看来 maven ear plugin 还不支持 JBoss AS 7 默认情况下它使用 JBoss AS 4 这会引起问题吗 我还在尝试弄清楚如何构建我的档案 现在遇到了与
  • 在没有互联网连接的情况下创建 Laravel 应用程序

    laravel 5 1 在没有互联网连接的情况下可以工作吗 我喜欢创建一个 Laravel 新应用程序 当我执行 laravel new test 使用 intenet 连接 时 它运行良好 但是当我在没有互联网连接的情况下在同一目录 新的
  • MongoDB CursorNotFound 在 collection.find() 上出现数百个小记录错误

    我正在 Mongo 3 6 6 上运行 在小型 Mongo Atlas 集群上 未分片 使用本机 Node JS 驱动程序 v 3 0 10 我的代码如下所示 const records await collection find user
  • 我应该在 OpenGL ES 游戏中使用多线程吗?

    我正在开发一款 iPhone 游戏 其中包含一个玩家和许多敌人 我使用 OpenGL ES 来显示游戏视觉效果 我有点困惑是否应该只使用一个线程还是使用多个线程来移动和控制玩家和敌人 您对这个基本游戏架构有什么建议 我在这一点上不同意 Ma
  • 使用 mongoose 在 MongoDB 中批量更新插入

    是否有任何选项可以使用猫鼬执行批量更新插入 那么基本上有一个数组并插入每个元素 如果不存在 或更新它 如果存在 我正在使用海关 ids 当我使用时 insertMongoDB 针对重复键返回错误 E11000 应更新 不过 插入多个新文档效