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

So posten Sie MongoDB-Daten mit NODE.js und Express in das verschachtelte Array

Sie können Model.prototype.update verwenden in Mungo, um das Unterdokument timings zu aktualisieren .

Es gibt jedoch zwei Szenarien -

  1. Wenn Sie Einträge pushen möchten, ohne Duplikate prüfen zu müssen, verwenden Sie $push Betreiber
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $push: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);
  1. Wenn Sie nur unterschiedliche Einträge pushen möchten, verwenden Sie $addToSet Betreiber
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $addToSet: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);

Hinweis:Erfordert mongoose zuerst

const mongoose = require('mongoose');

Korrigieren Sie Ihren Code wie folgt, Sie können auch nicht die genaue ID des Unterdokuments abrufen, aber Sie können das aktualisierte Stammdokument abrufen -

const updatedUser = await User.findOneAndUpdate({
        _id: mongoose.Types.ObjectId(req.body._id)
    },
    {
        $addToSet: {
            timings: {
                startTime, 
                endTime, 
                elapsedTime
            }
        }
    }, {
        new: true
    }).exec();