如何使用父文档展平动态字段-Spring Data Mongo DB

时间:2019-03-01 18:58:31

标签: mongodb spring-data spring-data-mongodb mongotemplate mongorepository

在我的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> {
}

现在,当我将其存储在集合中时,它看起来像这样:

enter image description here

我希望它看起来像这样:

"_id": "XYZ" 
"_class": "XYZ" 
"workCaseId":"12" 
"taskName":"AUDIT" 
"owner":"ANSHU" 
"createdDate":"XYZ"

关于不使用转换器就可以解决此问题的任何想法?或者,如果我必须使用它们,该怎么办?

我是Spring数据mongodb的新手,因为我们最近从Oracle跳到mongo。

1 个答案:

答案 0 :(得分:0)

如果您使用的是最新的mongo版本,则可以使用$replaceRoot$mergeObjects(来自stackoverflow answer的引用)

let pipeline = [
    {
        "$replaceRoot":{
            "newRoot":{
                "$mergeObjects":[
                    {
                        "id":"$id"
                    },
                    "$properties"
                ]
            }
        }
    }
]
db.collection.aggregate(pipeline)