Как сгладить динамическое поле с родительским документом - Spring data Mongo DB - PullRequest
0 голосов
/ 01 марта 2019

В моем загрузочном проекте 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 Data Mongodb, поскольку мы недавно сделали переход к Mongo из Oracle.

1 Ответ

0 голосов
/ 02 марта 2019

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

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