Как сгладить динамическое поле с родительским документом - Spring data Mongo DB

В моем проекте загрузки 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 data mongodb, поскольку мы недавно перешли на mongo из Oracle.


person Anshuman Tripathy    schedule 01.03.2019    source источник


Ответы (1)


Если вы используете последнюю версию mongo, вы можете использовать $ replaceRoot и $ mergeObjects (ссылка с ответ stackoverflow)

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