MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come inviare i dati MongoDB all'array nidificato utilizzando NODE.js ed Express

Puoi utilizzare Model.prototype.update in mangusta per aggiornare il sottodocumento timings .

Tuttavia esistono due scenari -

  1. Se desideri inviare le voci senza dover controllare i duplicati, utilizza $push operatore
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $push: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);
  1. Se desideri inviare solo voci distinte, utilizza $addToSet operatore
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $addToSet: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);

Nota:richiede mongoose prima

const mongoose = require('mongoose');

Correggi il tuo codice in base a quanto segue, inoltre non puoi ottenere l'ID esatto del documento secondario, ma puoi ottenere il documento radice aggiornato -

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