MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Upsert Array Elements pasujące do kryteriów w dokumencie MongoDB?

To, czego potrzebujesz, nie jest możliwe przy użyciu pojedynczej aktualizacji bez jakiejś logiki po stronie aplikacji. Zwróć uwagę, że upsert jako funkcja nie jest odpowiednia dla tego konkretnego problemu, chyba że chcesz automatycznie tworzyć nowe dokumenty Widget, jeśli nie istnieją z podaną nazwą.

Problem, z którym się spotykasz, polega na tym, że nie ma funkcji umożliwiającej wykonanie dwóch różnych aktualizacji w zależności od istnienia elementu tablicy. Twoje jedyne dwie opcje to:

  1. Znajdź element, ustal istnienie odpowiednich właściwości, skompiluj odpowiednią aktualizację z nowymi lub zmienionymi właściwościami i wykonaj ją. Ma to ważną wadę, ponieważ nie jest to metoda bezpieczna dla współbieżności. Innymi słowy, jeśli dwie usługi sieciowe spróbują tego samego w tym samym czasie, jedna może nadpisać swoje zmiany.
  2. Utwórz dokumenty z właściwości widżetu na najwyższym poziomie, a nie osadzone. Pozwala używać upserts do robienia tego, co chcesz. Oczywistym minusem jest to, że nie jest to zbyt przyjemna opcja z punktu widzenia projektowania schematu. Nie uzyskasz automatycznie wszystkich właściwości, jeśli na przykład pobierzesz widżet.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Silnik wykrywania i monitorowania serwerów jest przestarzały

  2. MongoDB $tydzień

  3. Rusztowania Yeoman, Mongoose i MongoDB

  4. Czy Mongoose obsługuje metodę Mongodb `findAndModify`?

  5. Jak utworzyć schemat Mongoose z tablicą identyfikatorów obiektów?