当前位置: 首页 > 知识库问答 >
问题:

设计猫鼬模型

潘慈
2023-03-14

在前端,我有3个层次结构。

顶层显示一个测试摘要,包含统计信息,如%通过/失败、各种标签、运行标识等。

第二级由测试套件的各个部分组成,这些部分可以通过顶级运行id访问。其中包含测试的名称,特定的测试通过/失败。

第三级是实际测试本身,包括报告、通过/失败状态等。

我使用的是平均堆栈,我想知道使用1、2或3种不同的Mongoose模型在MongoDB中html" target="_blank">存储数据的利弊。我知道在数组中使用嵌入式文档的一个问题是,我将在查询/更新中而不是在特定元素中获取整个数组。

备选案文1)

使用3个模型,每个摘要、部分和测试各一个。然后使用相同的run_id作为一个值,我可以将它们绑定在一起。

备选方案2)

使用2个模型,摘要和部分。然后,该部分有一个带有嵌入式文档的数组,每个文档都与特定的测试相关。

备选方案3)

仅具有测试和节模型,并在查询需要时创建摘要。

不确定这些信息是否足够,请告诉我,我可以尝试添加更多信息。谢谢

共有1个答案

贺劲
2023-03-14

我只是引用你的话:

我知道在数组中使用嵌入式文档的一个问题是,我将在查询/更新中获得整个数组,而不是特定的元素。

根据mongo find的文档http://mongoosejs.com/docs/api.html#model_Model.find

您有以下参数:参数:

  • 条件
  • [字段]要选择的可选字段
  • [选项]可选
  • [回调]

您可以对任何n个要检索的字段进行查询和投影,并且只包括所需的数据。

对我来说,mongo中的大多数操作都是原子的,这就是为什么处理mongo比数据库更容易,而且你可以使用$set更新文档的单个部分,比如

Model.where({ _id: id }).update({ $set: { title: 'words' }})

请记住,更新嵌入文档的文档写入速度较慢,但读取速度较快,在另一种情况下,具有单独的集合可以是另一种方式,对此没有直接的答案,有时您必须进行试验在你的场景中,我觉得你可以尝试使用嵌入式文档,看看它是如何工作的,或者你可以尝试选项2。

我希望这是有意义的!干杯

 类似资料:
  • 我想为用户设计一个清单。基本上,我尝试创建一个清单,其中包含一个用户id和一个包含每个项目编号的项目列表。 存在我的集合“项”的架构: 我不能设计一个库存集合,在那里我可以很容易地更新每个项目的数量并添加新项目。

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

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

  • 问题内容: 我如何知道已保存数据的模型计数?有一种方法,但似乎无效。 是一个对象,调用哪个方法可以得到实数? 谢谢 问题答案: 下面的代码有效。注意countDocuments的使用。

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

  • 问题内容: 我有一个让我感到困惑的奇怪问题。我有一个模型: 变体条目如下所示: 我需要添加一个新字段-说“颜色”。所以我这样做是为了批量更新: 但是,“颜色”字段未设置-如果我再次浏览并注释掉该行,则它不会显示。我似乎无法弄清楚为什么要这样做。我有一个onSave事件,该事件已正确触发,因此可以保存。我也没有对版本结构进行任何检查- 即没有代码只允许代码和价格。我显然缺少了一些东西,但几个小时后我