MongoDB Compass可视地插入子文档

时间:2017-10-11 15:26:45

标签: mongodb

我正在使用MongoDB Compass直观地构建我的集合。

在突出显示的部分中,我没有看到插入子文档的“文档”类型。我是以正确的方式做到的吗?

enter image description here

5 个答案:

答案 0 :(得分:3)

docs州:

  

对于字段值,您可以粘贴可以解析的有效JSON   JavaScript的JSON.parse。

     

如果粘贴的JSON是对象(即文档),则键必须是   引用双引号并允许转义。首先   字符必须是大括号{而最后一个必须是正确的卷曲   大括号:

{
  "email": "test@example.com",
  "phone": "555-555-1212"
}

但不幸的是,这个过程实际上是违反直觉的,因为如果您从上面的示例中复制JSON对象,您将能够将其粘贴到字段值中,除非你首先输入一些东西,即空格字符。

但是如果您的对象是有效的JSON,它将被粘贴(!)但不会被解析(?)并且它将被保存为字符串。

无论如何,即使您设法存储对象,也无法轻松编辑,最终会复制并粘贴到外部文本编辑器以实现目标。

编辑

您可以尝试使用此客户端Robo 3T,它可让您更轻松地编辑文档结构。有趣的是,如果您使用Robo 3T编辑文档并在Compass中重新加载文档,它将让您一直按照您的意图执行...所以它必须是一种Compass UI问题/错误。

答案 1 :(得分:1)

您可以实现您的意思,只需将otherQuestions类型设置为Object

这将允许您嵌入另一个文档/对象,它是 JSON

这是使用基于NoSQL BSON 的数据库的方式,它不是关系型的,因此您无法将字段类型设置为另一个文档,只需使用对象< / strong>并根据需要嵌入树。

无论如何,我强烈建议您阅读Mongo's documentation

答案 2 :(得分:0)

您可以在通过UI进行编辑时选择对象类型,如下所示:

enter image description here

对象可以具有不同类型的多个属性。使用API​​查询时,数据如下:

enter image description here

答案 3 :(得分:0)

您只需为该子文档的字段/变量名称分配类型对象

Adding array of sub-documents using MongoDB Compass

答案 4 :(得分:0)

MongoDB Compass似乎最近添加了JSON视图功能: enter image description here

因此,从“列表”视图切换到该视图,然后在要更改的任何文档上单击“编辑文档”。您现在正在直接编辑文档的JSON表示形式。完成更改后,假设JSON在更改后仍然有效,请点击Update。

例如,如果您需要向现有文档中添加较大的数据片段(对象阵列等),而不是一次添加一个道具并从微小的下拉列表中选择类型,那么这会很有帮助。