java – 使用部分定义的模式映射文档
作者:互联网
我正在使用Spring& amp;编写一个演示应用程序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< String,Object>的实现.正如评论中提到的那样(它也是一个界面,但确实有效).
如果你正在使用Spring Data Rest,你可能不需要“手动”反序列化,Spring会为你做.检查this answer以获取如何操作的基本示例.
没有指定模式的数据可能不是最好的想法(mongodb会在数据库级别保存你,但你应该在应用程序级别这样做),但我在生产中使用类似的技巧,你可以以某种方式使它工作.
标签:java,mongodb,spring-data,spring-data-mongodb 来源: https://codeday.me/bug/20191001/1840139.html