MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose findOneAndUpdate und upsert gibt keine Fehler zurück, keine betroffenen Dokumente

Vergessen Sie ab Mongoose 4+ nicht, new:true zu setzen zusammen mit upsert oder Sie erhalten das alte Dokument als Rückgabewert, nicht das aktualisierte.

Dies ist ziemlich knifflig, besonders wenn die Anfrage ein Dokument erstellt, da Sie new:true nicht angeben, erhalten Sie ein leeres Dokument (es gab kein vorhandenes Dokument), aber keinen Fehler.

    var myObj = ...;
    collection.findOneAndUpdate(
    {uniqueAttr: myObj.uniqueAttr},
    myObj,
    {upsert: true, new: true},
    function(...) {...}