sql >> Database >  >> NoSQL >> MongoDB

Upsert Array Elements die voldoen aan criteria in een MongoDB-document?

Wat u nodig hebt, is niet mogelijk met een enkele update zonder enige logica aan de app-zijde. Houd er rekening mee dat upsert als functie niet relevant is voor dit specifieke probleem, tenzij u automatisch nieuwe Widget-documenten wilt maken als er geen bestaan ​​met de opgegeven naam.

Het probleem waar je tegenaan loopt, is dat er geen functionaliteit is waarmee je twee verschillende updates kunt doen, afhankelijk van het bestaan ​​van een array-element. Uw enige twee opties zijn:

  1. Zoek het item, bepaal het bestaan ​​van relevante eigenschappen, compileer een geschikte update met uw nieuwe of gewijzigde eigenschappen en voer deze uit. Dit heeft het belangrijke nadeel dat dit geen gelijktijdige veilige methode is. Met andere woorden, als twee webservices dit tegelijkertijd proberen, kan men elkaars wijzigingen overschrijven.
  2. Maak widgeteigenschappen documenten op het hoogste niveau in plaats van ingesloten. Hiermee kunt u upserts gebruiken om te doen wat u wilt. Een duidelijk nadeel is dat dat geen erg leuke optie is in termen van schema-ontwerp. U krijgt bijvoorbeeld niet automatisch alle eigenschappen als u een widget ophaalt.


  1. Mongodb telt alle array-elementen in alle objecten die overeenkomen met criteria

  2. Redis store (of een database?) Lock-mechanisme (NodeJS)

  3. Verbinding maken met mongodb via de browser?

  4. Beste Session Storage Middleware voor Express + MongoDB