sql >> Databáze >  >> NoSQL >> MongoDB

Aktualizuje operace Mongoose upsert/obnovuje výchozí hodnoty schématu?

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.



  1. Jak se připojit ke vzdálenému serveru Redis?

  2. Jak vytvořit a předat dokument bson - Go lang?

  3. Návrh tabulky MongoDB a výkon dotazů

  4. Vyhledávací panel s návrhy s nodejs a mongodb