MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment ajouter un json dans un tableau imbriqué d'un document mongodb en utilisant Spring?

Cette requête de mise à jour ajoute le JSON au tableau imbriqué, "SERVICES.VERSIONS.GROUPS.CUSTOMERS" , en fonction des conditions de filtre spécifiées. Notez que vos conditions de filtre dirigent l'opération de mise à jour vers le tableau spécifique (des tableaux imbriqués).

// 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" }
      ]
  }
);

Peu de choses à noter lors de la mise à jour de documents avec des tableaux imbriqués de plus d'un niveau d'imbrication.

  • Utilisez l'opérateur toutes positions $[] et l'opérateur de position filtré $[<identifier>] , et pas le $ opérateur de position.Avec l'opérateur de position filtré, spécifiez les conditions de filtrage du tableau à l'aide de arrayFilters paramètre. Notez que cela dirigera votre mise à jour pour cibler le tableau imbriqué spécifique.
  • Pour l'opérateur de position filtré $[<identifier>] , l'identifiant doit commencer par une lettre minuscule et ne contenir que des caractères alphanumériques.

Références :

  • Opérateurs de mise à jour de tableau
  • db.collection.update() avec arrayFilters