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

为什么当mongodb的好处是无模式时,猫鼬会使用模式?

郑桐
2023-03-14
问题内容

我是mongodb的超级新手。我正在使用猫鼬从node.js访问mongodb,并且知道如何使事情工作,但是我不认为我为什么理解它的工作方式。

最重要的是,当mongodb的突出特征之一是它没有模式时,我不明白为什么猫鼬会具有“模式”。有人可以启发我吗?谢谢。


问题答案:

没有模式的数据是无用的。您从MongoDB获得文档,该怎么做?阅读一些领域?您需要知道这些字段的名称,类型和含义。那是一个架构。

当人们说MongoDB“没有模式”时,他们实际上是说它不像SQL数据库那样强制执行模式。MongoDB将架构问题提升到您的应用程序级别,您可以在其中更灵活地处理它们。例如,为了向文档中添加新字段,您无需对ALTER集合执行全部或全部操作(可能需要数百万个条目)。您只需将该字段添加到ODM(猫鼬)模式中就可以了。



 类似资料:
  • 问题内容: 如何将一个架构添加到另一个架构?这似乎无效: 我检查了网站,它显示了如何为数组声明而不是为单个声明。 谢谢 问题答案: 有几种方法可以做到这一点。最简单的就是这样: 然后,您只需确保您的应用程序正在编写该ID,并在查询中使用该ID即可根据需要提取“相关”数据。 按用户ID搜索任务很好,但按任务ID查询用户则比较麻烦: 另一种方法是利用Mongoose的填充功能来简化查询。为此,您可以执

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

  • 问题内容: 在阅读教程时,通常会在模式和模型之间进行区分,特别是在处理mongoose / mongodb时。由于在该系统下似乎不存在“模型”,因此移植到Postgresql会有些混乱。两种方法有什么区别? 例如,此行的postgres / sql ORM等价于什么? (猫鼬和express.js): 问题答案: 在猫鼬中,模式表示特定文档的结构,可以是完整文档,也可以是文档的一部分。这是表达期望

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

  • 问题内容: 我刚开始是猫鼬。我有一个带猫鼬的创建脚本,该脚本用示例数据创建模式和数据库。 现在,我编写实际的应用程序。每次我的应用程序运行时,我是否需要创建模式对象,或者它已经以某种方式可用? 换句话说,我是否需要在每个使用猫鼬访问数据库的应用程序中运行此代码,还是仅在第一次运行此代码: 如果我有设置器/验证器/等,答案将如何变化? 问题答案: 一个定义就是让应用程序理解如何将数据从MongoDB

  • 问题内容: 我有这个代码: 由于该应用程序支持其他类型的身份验证,因此我有一个用户模型,该模型具有嵌套的名为local的对象,看起来像 因此,在登录期间,我想检查用户是否提供了密码,但是遇到了这个有趣的问题。我的测试对象如下所示: 但是打印 我哪里做错了? 问题答案: 这是因为您从猫鼬回来的文档对象不会直接访问属性。它使用原型链,因此返回false(我在简化这一点)。 您可以执行以下两项操作之一: