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

Hvordan tilføjer man en json i et indlejret array af et mongodb-dokument ved hjælp af Spring?

Denne opdateringsforespørgsel tilføjer JSON til det indlejrede array, "SERVICES.VERSIONS.GROUPS.CUSTOMERS" , baseret på de specificerede filterbetingelser. Bemærk, at dine filterbetingelser dirigerer opdateringsoperationen til det specifikke array (af de indlejrede arrays).

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

Få ting at bemærke, når du opdaterer dokumenter med indlejrede arrays af mere end et niveau indlejring.

  • Brug alle positionsoperatoren $[] og den filtrerede positionaloperator $[<identifier>] , og ikke $ positionsoperator. Med filtreret positionsoperator angiv array-filterbetingelserne ved hjælp af arrayFilters parameter. Bemærk, at dette vil lede din opdatering til at målrette mod det specifikke indlejrede array.
  • For den filtrerede positionsoperator $[<identifier>] , skal identifikatoren begynde med et lille bogstav og kun indeholde alfanumeriske tegn.

Referencer:

  • Array UpdateOperators
  • db.collection.update() med arrayFilters


  1. Redis - Overvej at omdøbe en af ​​bønnerne eller aktivere tilsidesættelse ved at indstille spring.main.allow-bean-definition-overriding=true

  2. Redis Managed Pub/Sub Server

  3. phpredis på fedora 12

  4. Kom godt i gang med PHP og MongoDB