MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie füge ich mit Spring einen Json in einem verschachtelten Array eines Mongodb-Dokuments hinzu?

Diese Aktualisierungsabfrage fügt den JSON dem verschachtelten Array "SERVICES.VERSIONS.GROUPS.CUSTOMERS" hinzu , basierend auf den angegebenen Filterbedingungen. Beachten Sie, dass Ihre Filterbedingungen den Aktualisierungsvorgang auf das spezifische Array (der verschachtelten Arrays) lenken.

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

Beim Aktualisieren von Dokumenten mit verschachtelten Arrays sind einige Dinge zu beachten von mehr als einer Verschachtelungsebene.

  • Verwenden Sie den reinen Positionsoperator $[] und der gefilterte Positionsoperator $[<identifier>] , und nicht das $ Positionsoperator. Mit gefiltertem Positionsoperator spezifizieren Sie die Array-Filterbedingungen mit den arrayFilters Parameter. Beachten Sie, dass dies Ihre Aktualisierung auf das spezifische verschachtelte Array ausrichtet.
  • Für den gefilterten Positionsoperator $[<identifier>] , muss die Kennung mit einem Kleinbuchstaben beginnen und darf nur alphanumerische Zeichen enthalten.

Referenzen:

  • Array-Aktualisierungsoperatoren
  • db.collection.update() mit arrayFilters