MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Upsert Array Elements, съответстващи на критериите в документ на MongoDB?

Това, от което се нуждаете, не е възможно да използвате една актуализация без някаква логика от страна на приложението. Обърнете внимание, че upsert като функция не е от значение за този конкретен проблем, освен ако не искате автоматично да създавате нови документи на Widget, ако не съществуват с предоставеното име.

Проблемът, с който се сблъсквате, е, че няма функционалност, която да ви позволява да правите две различни актуализации в зависимост от съществуването на елемент от масива. Единствените ви две опции са:

  1. Намерете елемента, определете съществуването на подходящи свойства, компилирайте подходяща актуализация с вашите нови или промени свойства и я изпълнете. Това идва с важния недостатък, че това не е безопасен метод за паралелност. С други думи, ако две уеб услуги опитат това в едно и също, една може да презапише промените една на друга.
  2. Направете свойствата на джаджа документи от най-високо ниво, а не вградени. Позволява ви да използвате upserts, за да правите това, което искате. Очевидният недостатък е, че това не е много добър вариант по отношение на дизайна на схемата. Няма да получите автоматично всички свойства, ако извлечете джаджа, например.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да актуализирам документ на Mongo след поставянето му?

  2. Географски разпределени MongoDB клъстери на AWS в региона на ЕС

  3. Mongo:намерете елементи, които нямат определено поле

  4. Клониране на база данни в Mongodb между хостове с помощта на драйвер на възел

  5. Задайте програмно преобразувател на MongoDb