MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come aggiungere un json in un array nidificato di un documento mongodb usando Spring?

Questa query di aggiornamento aggiunge il JSON all'array nidificato, "SERVICES.VERSIONS.GROUPS.CUSTOMERS" , in base alle condizioni di filtro specificate. Si noti che le condizioni del filtro indirizzano l'operazione di aggiornamento all'array specifico (degli array nidificati).

// JSON document to be added to the CUSTOMERS array
new_cust = { 
             "CUSTOMER_CONFIG_ID": "6", 
             "ACTIVATION_DATE": "31-03-2020", 
             "STATUS": "Y" 
}

db.collection.update( 
  { 
      "SERVICE_CATEGORY": "COMMON_SERVICE", 
      "SERVICES.SERVICE_NAME": "Authentication Service",
      "SERVICES.VERSIONS.VERSION_NAME": "AuthenticationServiceV6_3"
  }, 
  { 
      $push: { "SERVICES.$[s].VERSIONS.$[v].GROUPS.$[g].CUSTOMERS": new_cust } 
  },
  {
      multi: true,
      arrayFilters: [
          { "s.SERVICE_NAME": "Authentication Service" },
          { "v.VERSION_NAME": "AuthenticationServiceV6_3" },
          { "g.GROUP_NAME": "TEST GROUP" }
      ]
  }
);

Poche cose da notare quando si aggiornano i documenti con array nidificati di nidificazione a più livelli.

  • Utilizza l'operatore di tutte le posizioni $[] e l'operatore posizionale filtrato $[<identifier>] , e non il $ operatore posizionale. Con l'operatore posizionale filtrato, specifica le condizioni del filtro dell'array utilizzando arrayFilters parametro. Tieni presente che questo indirizzerà il tuo aggiornamento per indirizzare l'array nidificato specifico.
  • Per l'operatore posizionale filtrato $[<identifier>] , l'identificatore deve iniziare con una lettera minuscola e contenere solo caratteri alfanumerici.

Riferimenti:

  • Operatori di aggiornamento array
  • db.collection.update() con arrayFilters