Pokud hledáte „důkaz“ očekávaného chování, pak nehledejte nic jiného než samotný zdrojový kód. Zejména v rámci $set
operátor v jakékoli "aktualizaci", kterou vydáte, aby zahrnoval updatedAt
pole nebo jakýkoli název, který jste na tento klíč namapovali v možnostech schématu.
Skutečný výpis odeslaný s akcemi "upsert" používá $setOnInsert
pro createdAt
název pole nebo mapované možnosti (viz horní část výpisu). Tato akce pouze platí, když se skutečně vyskytne "upsert", takže dokumenty, které existují a jsou pouze shodné pro kteroukoli z metod "aktualizace", nejsou nikdy skutečně dotčena touto hodnotou.
Tyto operátory jsou součástí toho, jak MongoDB funguje, a nemají ve skutečnosti co dělat s mongoose, ale zde zobrazený kód ukazuje, jak mongoose "upravuje" vaše "aktualizační" akce tak, aby zahrnovaly tyto další operace.
Pro referenci celou hlavní funkci v schema.js
která řeší, co je třeba podat, aktuálně začíná na /a> pro genUpdates()
funkce, jak je volána ve spodní části zde zobrazeného seznamu, ale horní část je posledních několik řádků této funkce, kde jsou klávesy $setOnInsert
získat definici.
Stručně řečeno, ANO každá akce „aktualizace“ je záměrná, aby updatedAt
mapované pole má aktuální Datum
přiřazenou hodnotu a také to, že „aktualizace“ jsou upraveny tak, aby zahrnovaly $setOnInsert
akci, která pouze platí, když je vytvořen nový dokument jako výsledek akce "upsert" pro createdAt
mapované pole.