在我的Spring启动项目中,有一个像这样的文档:
@Document(collection="AuditTable")
public class AuditTable {
@Id
private String id;
private Map<String, String> properties;
其中的属性是一个动态字段,即它可以接受许多不同的键值对。
我使用MongoRepository存储此值:
@Repository
public interface AuditTableRepo extends MongoRepository<AuditTable, String> {
}
现在,当我将其存储在集合中时,它看起来像这样:
我希望它看起来像这样:
"_id": "XYZ"
"_class": "XYZ"
"workCaseId":"12"
"taskName":"AUDIT"
"owner":"ANSHU"
"createdDate":"XYZ"
关于不使用转换器就可以解决此问题的任何想法?或者,如果我必须使用它们,该怎么办?
我是Spring数据mongodb的新手,因为我们最近从Oracle跳到mongo。
答案 0 :(得分:0)
如果您使用的是最新的mongo版本,则可以使用$replaceRoot和$mergeObjects(来自stackoverflow answer的引用)
let pipeline = [
{
"$replaceRoot":{
"newRoot":{
"$mergeObjects":[
{
"id":"$id"
},
"$properties"
]
}
}
}
]
db.collection.aggregate(pipeline)