0

I have below structure in MongoDB :

{
"id" : "6c71-fea4-4bg6-a0bf-768n0n54t59",
"continents" : [
       {
       "id" : "45" ,
       "countries" : [{
                "id" : "3e4",
                 "states" : {
                              "id" : 28,
                              "name" : "string"
                          } 
                }
                ] 
        }
   ]
}

,

Requirement is to update this state attributes as an array from object:

{
"id" : "6c71-fea4-4bg6-a0bf-768n0n54t59",
"continents" : [
       {
       "id" : "45" ,
       "countries" : [ {
                "id" : "3e4",
                 "states" : [{
                              "id" : 28,
                              "name" : "string"
                          } ]
                ] }
        }
   ]
}

Mongock changelog that I tried:

@ChangeLog(order = "0020") 
class DBChangeToArray {

    @ChangeSet(author = "me", order = "0020", id = "updatearray")
    fun convertObjectToArray(mongockTemplate: MongockTemplate) {
 Update().set("continents.countries.states", Query())
            .let { updateOperation ->
                mongockTemplate.updateMulti(
                    Query().addCriteria(
                        Criteria.where("_id").`is`("6c71-fea4-4bg6-a0bf-768n0n54t59")
                    ), updateOperation, Collection::class.java
                )
            }
    }
}

Since I have to do it from springboot service,I was trying to use mongock to do the same with Update.set operator,but its not working.Please help,even plain mongo query would help.

Techie
  • 81
  • 1
  • 10

0 Answers0