使用部分定义的模式映射文档
Mapping a document with partly-defined schema
我正在使用 Spring & MongoDB 作为数据库编写一个演示应用程序。
我的主域 class 看起来像:
@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,这是一个接口,而不是class。
尝试将结果转换为 DBObject BasicDBObject (or BasicDBList) 的实现,或评论中提到的 Map (它也是一个接口,但它确实有效)。
如果您正在使用 Spring Data Rest, you will probably not need to deserialize "manually", Spring will do it for you. Check 来了解基本操作示例。
拥有未指定架构的数据可能不是最好的主意(mongodb 可以避免在数据库级别执行此操作,但您应该在应用程序级别执行此操作),但我在生产中使用了类似的技巧,而您能以某种方式让它发挥作用。
我正在使用 Spring & MongoDB 作为数据库编写一个演示应用程序。
我的主域 class 看起来像:
@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,这是一个接口,而不是class。
尝试将结果转换为 DBObject BasicDBObject (or BasicDBList) 的实现,或评论中提到的 Map
如果您正在使用 Spring Data Rest, you will probably not need to deserialize "manually", Spring will do it for you. Check