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

Sådan sender du MongoDB-data til det indlejrede array ved hjælp af NODE.js og Express

Du kan bruge Model.prototype.update i mongoose for at opdatere underdokumentet timings .

Der eksisterer dog to scenarier -

  1. Hvis du vil pushe poster uden at skulle kontrollere dubletter, så brug $push operatør
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $push: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);
  1. Hvis du kun vil skubbe distinkte poster, så brug $addToSet operatør
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $addToSet: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);

Bemærk:Kræv mongoose først

const mongoose = require('mongoose');

Ret din kode til nedenstående, også du kan ikke få det nøjagtige underdokuments id, men du kan få det opdaterede roddokument -

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



  1. Mongoose opdaterer ikke mit dokument, hvis jeg ikke har nogen tilbagekaldsfunktion

  2. Omform dokumenter ved at opdele en feltværdi

  3. Hvordan virker SignalR.Redis under motorhjelmen?

  4. MongoDB:Hvordan grupperes indlejrede arrays i ét dokument?