mongodb - MongoDB 中动态字段的用途是什么?

标签 mongodb ruby-on-rails-4 mongoid dynamic-attributes

起初,我认为无需在模型中定义即可向对象添加某些内容,这非常酷。但现在我无法想象如何在 Ruby on Rails 应用程序等 Web 应用程序中使用它。哪些用例需要动态字段以及 UI 如何允许用户定义这些动态字段?您是否让用户设置动态字段的键(使用文本框或其他内容)?你们中是否有人立即知道任何演示都是展示动态字段真正有用性的一般应用程序?另外,如果您打算阅读这些动态字段,您不需要 read_attribute (在 RoR 的情况下)是否已提前计划好“动态”字段的名称?

我问这个问题是因为我在学校有一项作业,要围绕 PostgreSQL 和 NoSQL 数据库(我选择了 MongoDB)开发一个应用程序。我已经成功地完成了此操作,但是,我添加到在 MongoDB 端定义的任何对象的每个属性都已在模型中定义。我想表明我知道这种功能,但我无法想出任何使用动态字段的理由,并且在搜索“mongodb 中动态字段的用途”或“动态字段”时找不到结果mongodb 演示”。

谢谢!

最佳答案

首先,“动态字段”是 Mongoid concept ,而 Mongoid 只是一个将 ruby​​ 对象映射到 MongoDB 文档的 ODM。 MongoDB 没有也不需要动态字段的概念,因为它是无模式的。尽管这在理论上意味着集合中的每个文档都可以具有不同的结构,但这从来都不是 MongoDB 的实际应用。

诸如 Mongoid 之类的 ODM 提供了一种有用的机制,可以在应用程序级别而不是在数据库本身中定义模式。在这种情况下,动态字段有两大好处。

  1. 能够添加具有不同结构的子文档。例如,您可以有一个动物系列。每种动物可能有不同的 body 部位。但在 MongoDB 中,我不需要仅仅因为某些动物有“象牙”列。
  2. 无需接触数据库即可更改架构的能力。通过附加“列”向数据库添加功能是很常见的。使用 Mongoid/MondoDB,这可以在应用程序代码中发生,就像更改应用程序类一样简单 - 相对于数据库完全透明。

关于mongodb - MongoDB 中动态字段的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925292/

相关文章:

node.js - 游标 batchSize 如何在 node-mongodb-native 驱动程序中工作?

node.js - 使用 Agenda.js 和 Node 安排重复的日常工作

具有时间范围的 Mongodb 交集

javascript - Rails 4 和 gon - 不工作? window.gon={};

ruby-on-rails-4 - Capybara 使用 xpath 填充

ruby-on-rails - Rails 中 RESTful 路由的更新操作(PATCH 或 PUT)

ruby-on-rails - Mongoid继承而不改变集合

ruby-on-rails - Mongoid "criteria"是如何工作的?

java - MongoDB Java 驱动程序 : Multiple Date query

ruby-on-rails - 从 mongoid 数据库中删除属性