创建没有值的 MongoDB 文档

Posted

技术标签:

【中文标题】创建没有值的 MongoDB 文档【英文标题】:Create MongoDB document without values 【发布时间】:2018-04-04 21:12:43 【问题描述】:

我有一个关于在 MongoDB 中创建集合的物理模式的基本问题。

我可以创建一个没有值的 MongoDB 文档吗?此时我只知道键和一些数据类型。但我没有价值观。是否可以创建一个模式,其中 O 仅具有值的占位符?

对于字符串,我可以将“”或“abc”(虚拟值)作为值的占位符。 对于十进制,我也可以这样做。将 123.1 作为虚拟值。 对于布尔值,我可以将 true 或 false 作为虚拟值 对于日期,我可以将“01-01-1900”作为虚拟值

但是当我有数百个字段时,放置这样的虚拟值变得很复杂,尤其是嵌套的字段,例如文档或数组中的文档。

我正在尝试找到一个相当于“创建表”的 SQL 世界,我们可以在其中创建物理模式,而无需放置值

有什么建议吗?

谢谢 奥罗宾多

【问题讨论】:

“关于创建物理模式的基本问题” -- 基本答案,MongoDB 没有模式。没有“严格类型或命名”之类的东西,就“数据库”(MongoDB)而言,每个文档确实可以完全不同。 Schema 被委托给您的“应用程序域逻辑”。这是对“创建表”的故意背离,它根本不存在。所以别再找了。 您好,感谢您的回答。但是说根本没有模式是否正确。在任何企业数据集中,我相信每条记录之间都会有一些共性。例如,每个记录流中都会有一个 id 字段,或者一个 name 字段,等等。但你是对的架构是灵活的。但灵活并不意味着每条记录与其他记录的属性没有重叠。我正在尝试为文档中常见的属性集提出一个架构。 MongoDB 没有架构。以粗体显示,因此它有望融入其中。“通用性”适用于您的 API,而不是 MongoDB。简而言之,这就是哲学,也是一个关键的区别。架构和触发器以及引用完整性以及所有这些东西在 MongoDB 中“根本不存在”。这实际上是设计的重点。所以不是数据库,而是你的软件层来处理这些事情。或者没有 了解 MongoDB 没有架构。这是否意味着在我插入文档之前没有物理模型? 【参考方案1】:

如果需要,您可以插入包含任何内容的文档(您可以只插入部分元素甚至是空文档)。 MongoDB 是一个面向文档的数据库,其中每个文档都可以完全不同。

忘记你对 RDBMS 的了解,因为这些知识在 MongoDB 世界中绝对没用。

【讨论】:

我的任务是为 Mongo 创建物理模型。我有一个显示预期记录性质的 UML,vix >、属性、它们的数据类型和 > 如果我认为每个文档都是灵活的,如何从物理模型开始?我创建了一个集合,从那时起,文档(相当于记录)......绝对没有定义的模式......那么UML图有什么用?我不需要密钥来创建索引吗?问题是我没有真正的记录(文件)。 ...我怎样才能使物理模型发生? 您的模型可以跳过一个空元素(不要存储到 MongoDB 中)或只为文档元素设置一个空/默认值(这将是 SQL 中的列等价物)。解决问题的方法有很多,但最佳选择取决于项目的细节。

以上是关于创建没有值的 MongoDB 文档的主要内容,如果未能解决你的问题,请参考以下文章

为啥 mongodb 查询在数组中查找具有两个值的文档不起作用?

MongoDB:获取具有两个值的不同组合的最新文档

Apache Drill 与 mongodb。在地图中查询具有特定键和值的文档

MongoDB查找所有数组元素都等于某个值的文档

如何使用php更新mongodb中具有键和值的子文档

如何使用php更新mongodb中具有键和值的子文档