当前位置: 首页 > 面试题库 >

猫鼬:Model.create和Collection.insert有什么区别

殳勇
2023-03-14
问题内容

我想在MongoDB中做一个批量插入工作,并且在mongoose中找到了两种方法:

一种方法是使用insert

dataArr = [
   {
       id: "",
       name: ""
   }
   {
       id: "",
       name: ""
   }
]

Collection.insert(dataArr)

另一种方法是Model.create

Model.create(dataArr)

两者都可以完成批量插入作业,但是它们之间有什么区别?

哪个效率更高?


问题答案:

在Mongoose中,有Model.createand
Collection.insert(后者严格不是Mongoose的一部分,而是底层MongoDB驱动程序的一部分)。

根据Mongoose开发人员的说法,当用一系列文档调用它们时,它们基本上是相同的,尽管查看代码使我认为它们之间存在细微的差异(
警告 :我对代码的 了解 不够好,所以我可能会弄错了关于以下内容):

  • using Model.create将调用在您的模式上声明的任何验证器/挂钩;
  • Model.create``.save对数组中的每个文档执行一个操作,从而导致N数据库调用(其中N是数组中的文档数);Collection.insert执行一个大型数据库调用;


 类似资料:
  • 问题内容: 和猫鼬有什么区别?参考哪个更好? 问题答案: 从文档中: Mongoose默认情况下为您的每个模式分配一个id虚拟获取器,该获取器将文档_id字段强制转换为字符串,对于ObjectIds,则返回其hexString。 因此,基本上,getter返回文档的字符串表示形式(默认情况下将其添加到所有MongoDB文档中,并且默认类型为)。 关于什么是更好的引用,这完全取决于上下文(即,您想要

  • 问题内容: 我想浏览Mongoose存储在Mongodb中的原始数据。去哪儿了?我有一个名为Profile的模式,其中存储了多个配置文件,但是使用Mongodb shell ,并且不返回任何内容。 架构 问题答案: 使用Mongoose时的默认集合名称是小写的复数模型名称。 因此,如果要为as 创建模型: 集合名称是; 因此您将在shell中找到其内容。 请注意,如果您不喜欢默认行为,则可以提供自

  • 问题内容: 我刚开始,最近经历了一个ODM框架。 在文档上,我找不到为什么需要使用。我可以给出的一个原因是,我们可以从定义应用程序架构。 我正在寻找更多可能的原因,以及吸引我使用的需求。 请列出所有可能的优点和使用理由/需要。 问题答案: 主要优势是相对于纯mongo的抽象。 来自SQL数据库类型的许多开发人员对于使用未定义结构的动态集合感到非常不舒服。因此, 模式 首先可以帮助您。 此外,它实现

  • 问题内容: 要修改猫鼬现有条目中的字段,使用之间有什么区别 还有这个 我问这个问题的原因是因为有人建议我昨天发布一个问题:NodeJS和Mongo- 当多个用户同时发送请求时出现意外行为。该人员建议使用更新而不是保存,但我尚不完全清楚为什么会有所作为。 谢谢! 问题答案: 首先有两个概念。您的应用程序是 客户端 ,Mongodb是 服务器 。 主要区别在于,在客户端代码中已经有一个对象,或者必须先

  • 问题内容: 我是Node.js,Mongoose和Expressjs的新手。我试图通过以下代码在MongoDB中使用Mongoose创建一个表“ feedbackdata”。但是它被创建为“ feedbackdata * s *”。通过谷歌搜索,我发现猫鼬使用了复数规则。任何人都可以帮助我删除复数规则吗?或“ feedbackdata”表的代码应如何? 下面是我的代码: }); 问题答案: 该文件

  • 问题内容: 我有和该文件使用Mongoose与我的数据库交互,并且我习惯于从中调用函数: 我的server.js从中调用了三个函数: 我不明白为什么会收到此错误: 我究竟做错了什么?我找到了一篇文章,但什么也做不了。 问题答案: 什么是TransientTransactionError A 是归类为暂时性的事务性错误,如果重试,它 可能 会成功。此外,如果未采取任何写锁定且事务(新数据)未反映在事