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

Стойността по подразбиране не е зададена при използване на Актуализация с Upsert като true

За добавяне на настройки по подразбиране към вашия документ, ако е създаден с findOneAndUpdate (не съществуваше преди заявката) и не предоставихте полето в актуализацията, трябва да използвате setDefaultsOnInsert .

Когато upsert и setDefaultsOnInsert и двете са true , стойностите по подразбиране ще бъдат зададени, ако записът не бъде намерен и се създаде нов. Това пропуска работния процес на проверка дали записът съществува и ако не, тогава създаване на нов със „запазване“, само за да сте сигурни, че са зададени настройките по подразбиране .

Имах същия проблем (запис, създаден с findOneAndUpdate с upsert: true ) и стойността по подразбиране за поле не беше добавена към записа, въпреки че беше в схемата. Това се отнася само за добавяне на стойности по подразбиране при използване на findOneAndUpdate за създаване на документи, а не за пропускане на актуализацията на полето „създадено“.

напр.

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. Meteor mongo актуализира вложен масив

  2. Как да изтрия каскадно с помощта на мидълуер за премахване на Mongoose?

  3. Mongoose / mongoDb търсене, където имам нужда от стойности на непопълнено свойство

  4. Монгокли поддържа ли URL на формула за Apple M1 чипове?

  5. вземете всички документи с максимална стойност, като използвате агрегиране в mongodb