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

Прехвърляне на обикновен обект към мангустен документ

Публикувам собствения си отговор, така че това да не остане отворено:

Моделите на версия 4 (стабилно пуснати на 2015-03-25) вече излагат hydrate() метод. Нито едно от полетата няма да бъде маркирано като мръсно първоначално, което означава извикване на save() няма да направи нищо, докато дадено поле не бъде мутирано.

https://github.com/LearnBoost/mongoose /blob/41ea6010c4a84716aec7a5798c7c35ef21aa294f/lib/model.js#L1639-1657

Много е важно да се отбележи, че това е предназначено да се използва за конвертиране на обикновен JS обект, зареден от базата данни, в mongoose документ. Ако получавате документ от REST услуга или нещо подобно, трябва да използвате findById() и update() .

За тези, които живеят опасно:

Ако наистина искате да актуализирате съществуващ документ, без да докосвате базата данни, предполагам, че можете да извикате hydrate() , маркирайте полетата като мръсни и след това извикайте save() . Това не е твърде различно от метода за настройка на doc.isNew = false; както предложих в първоначалния си въпрос. Валери (от отбора на мангустите) обаче предложи да не се прави това. Това може да причини грешки при валидиране и други проблеми с крайния случай и като цяло не е добра практика. findById е наистина бърз и няма да бъде вашето тясно място.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - пример за ръчни препратки

  2. MongoDB $avg Оператор на конвейер за агрегиране

  3. MongoDB индексира поддокументи, които не се използват въз основа на синтаксиса на заявката

  4. MongoDB / Express - Как да превключите база данни след свързване чрез connect()

  5. Да се ​​съхранява _Id като обект или низ в MongoDB?