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

MongoDB atomowe findOrCreate:findOne, wstaw, jeśli nie istnieje, ale nie aktualizuj

Począwszy od MongoDB 2.4, nie jest już konieczne poleganie na unikalnym indeksie (lub jakimkolwiek innym obejściu) dla atomowego findOrCreate jak operacje.

Dzieje się tak dzięki $setOnInsert nowy operator w 2.4, który pozwala określić aktualizacje, które powinny mieć miejsce tylko podczas wstawiania dokumentów.

To w połączeniu z upsert opcja, oznacza, że ​​możesz użyć findAndModify aby osiągnąć atomowy findOrCreate -podobna operacja.

db.collection.findAndModify({
  query: { _id: "some potentially existing id" },
  update: {
    $setOnInsert: { foo: "bar" }
  },
  new: true,   // return new doc if one is upserted
  upsert: true // insert the document if it does not exist
})

Jako $setOnInsert dotyczy tylko wstawianych dokumentów, jeśli zostanie znaleziony istniejący dokument, modyfikacja nie nastąpi. Jeśli żaden dokument nie istnieje, przestawi jeden z określonym _id, a następnie wykona zestaw tylko wstawiania. W obu przypadkach dokument jest zwracany.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak korzystać z MongoDB Stitch w aplikacjach na Androida

  2. Połącz wartości ciągu w tablicy w jednym polu w MongoDB

  3. Częściowe indeksy w mongodb / mangusta

  4. Bezpłatne wdrażanie i monitorowanie baz danych Open Source za pomocą ClusterControl Community Edition

  5. Stwórz stronę internetową sklepu spożywczego za pomocą Angular, NodeJS, Express i MongoDB