2017-08-26 48 views
0

我想克隆一个集合到一个新的集合,删除所有的文档,然后从csv文件导入新的文档。当我使用copyTo进行复制时,一切正常。数据类型从源集合复制到新集合。但是,从新集合中删除所有文档并从csv导入后,数据类型将丢失。源csv中的数据类型已经设置为与我从中复制的源集合中的内容匹配。mongodb dataypes导入时

  • 有没有办法在从集合中删除所有文档后保留数据类型?
  • 如何在导入时从我的csv复制数据类型?例如我的日期列显示为字符串。

回答

1

新集合没有固定模式,因此添加的文档不必相似,除非您使用validator选项创建集合。您还可以将验证添加到现有集合中。请参阅MongoDB手册中的Document Validation

+0

太好了。这有助于并增加了我想要的验证层,但是如何从集合中“复制或提取”模式以便我可以将它应用于新集合(如果可能的话)?我来自一个SQL背景,我试图了解是否有任何等同于在SQL中脚本的表。 –

+0

我们不使用验证功能,因此我不知道是否有方法从现有文档创建验证模式。我们从MongoDB v2开始(验证是一个v3.2 +特性)......我不认为我们会为我们的集合添加验证,因为我们喜欢我们写入数据库的灵活性。我们的服务器代码是Java,所以我们没有额外字段或不正确数据类型的问题(因为我们坚持Java对象)。能够改变我们坚持的内容而无需重新配置集合是很好的。我们的领域有点流畅,所以我们的数据模型经常以小的方式变化。 – Paul

+0

我以前的评论(空间不足)的要点是建议如果可能的话跳过验证。我们从关系数据库迁移了我们的应用程序,并没有后悔一次。我们能够比以前更快地适应所需和要求的更改。例如,将字段从单个值更改为数组现在是微不足道的......来自sql背景,您知道关系数据库中的痛苦是什么。代码强制约束适用于我们(我们没有数据完整性问题),但当然可能不适合您。 – Paul