sql >> Databáze >  >> NoSQL >> MongoDB

Jak přidat json do vnořeného pole mongodb dokumentu pomocí Spring?

Tento aktualizační dotaz přidá JSON do vnořeného pole "SERVICES.VERSIONS.GROUPS.CUSTOMERS" na základě specifikovaných podmínek filtru. Všimněte si, že vaše podmínky filtru nasměrují operaci aktualizace na konkrétní pole (z vnořených polí).

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

Při aktualizaci dokumentů pomocí vnořených polí je třeba si uvědomit několik věcí více než jedné úrovně vnoření.

  • Použijte všepolohový operátor $[] a filtrovaný polohový operátor $[<identifier>] , a nikoli $ poziční operátor. Pomocí filtrovaného pozičního operátoru určete podmínky filtru pole pomocí arrayFilters parametr. Pamatujte, že to nasměruje vaši aktualizaci tak, aby cílila na konkrétní vnořené pole.
  • Pro filtrovaný poziční operátor $[<identifier>] , identifikátor musí začínat malým písmenem a obsahovat pouze alfanumerické znaky.

Reference:

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


  1. Tipy pro správu zálohování MongoDB pro sdílené clustery

  2. Následovníci - návrh databáze mongodb

  3. Pochopení a správa diskového prostoru na vašem serveru MongoDB

  4. potíže s připojením k redis, aby bylo možné použít více pracovních kues