sql >> Database >  >> NoSQL >> MongoDB

MongoDB-gegevens naar de geneste array posten met NODE.js en Express

U kunt de Model.prototype.update gebruiken in mangoest om het subdocument timings bij te werken .

Er bestaan ​​echter twee scenario's -

  1. Als je items wilt pushen zonder dubbele controle, gebruik dan $push telefoniste
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $push: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);
  1. Als je alleen afzonderlijke items wilt pushen, gebruik dan $addToSet telefoniste
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $addToSet: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);

Opmerking:vereist mongoose eerst

const mongoose = require('mongoose');

Corrigeer uw code naar het onderstaande, u kunt ook de exacte ID van het subdocument niet krijgen, maar u kunt het bijgewerkte hoofddocument krijgen -

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



  1. APScheduler voert async-functie uit in Tornado Python

  2. Kunnen we spring data repository gebruiken om ingesloten documenten in mongodb bij te werken?

  3. MongoDB $atanh

  4. Hoe een MongoDB-cluster configureren die sessies ondersteunt?