使用部分定义的模式映射文档

我正在使用Spring和MongoDB作为数据库编写演示应用程序。

我的主要域类看起来像:

@Document public class Person { @Id private String id; //Some other fields private DBObject additionalData; } 

关键是additionalData是一个没有指定模式的子文档,它是一种用户定义的JSON。 但是当我解析这个json(使用(DBObject)JSON.parse(value)表达式)时,它在MongoDB中存储为一个字符串,我需要它是一个嵌套的文档结构。

搜索了几个小时,没有找到解决方案。 有任何想法吗?

我不太确定投射结果的预期结果

 JSON.parse(value) 

到DBObject ,它是一个接口,而不是一个类。 尝试将结果转换为DBObject BasicDBObject (或BasicDBList )的实现,或者注释中提到的Map (它也是一个接口,但它确实有效)。

如果你正在使用Spring Data Rest ,你可能不需要“手动”反序列化,Spring会为你做。 请查看此答案 ,了解如何操作的基本示例。 没有指定架构的数据可能不是最好的想法(mongodb会让你免于在数据库级别进行,但你应该在应用程序级别这样做),但我在生产中使用类似的技巧,你可以以某种方式使它工作。