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

Wartość domyślna nie jest ustawiona podczas używania aktualizacji z Upsert jako true

Do dodawania wartości domyślnych do dokumentu, jeśli został utworzony za pomocą findOneAndUpdate (nie istniało przed zapytaniem) i nie podałeś pola w aktualizacji, użyj setDefaultsOnInsert .

Kiedy upsert i setDefaultsOnInsert oba są true , wartości domyślne zostaną ustawione, jeśli rekord nie zostanie znaleziony i zostanie utworzony nowy. Pomija to przepływ pracy polegający na sprawdzaniu, czy rekord istnieje, a jeśli nie, tworzenie nowego za pomocą „zapisz” tylko po to, aby upewnić się, że ustawione są wartości domyślne .

Miałem ten sam problem (rekord utworzony za pomocą findOneAndUpdate z upsert: true ) i wartość domyślna pola nie została dodana do rekordu, mimo że znajdowała się w schemacie. Dotyczy to tylko dodawania wartości domyślnych przy użyciu findOneAndUpdate do tworzenia dokumentów, a nie do pomijania aktualizacji pola „utworzono”.

np.

User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. W jaki sposób MongoDB rejestruje sortowanie, gdy nie określono kolejności sortowania?

  2. Dlaczego wydajność Mongodb jest lepsza w systemie Linux niż w systemie Windows?

  3. Odwzoruj „tablicę obiektów” na prostą tablicę kluczowych wartości

  4. (MongoDB Compass) wyszukiwanie przy użyciu let not working

  5. MongoDB mongorestore i istniejąca kolekcja z rekordami