sql >> Databáze >  >> NoSQL >> MongoDB

Jak odeslat data MongoDB do vnořeného pole pomocí NODE.js a Express

Můžete použít Model.prototype.update v mongoose k aktualizaci dílčího dokumentu timings .

Existují však dva scénáře -

  1. Pokud chcete odeslat položky, aniž byste museli kontrolovat duplikáty, použijte $push operátor
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $push: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);
  1. Pokud chcete odeslat pouze odlišné položky, použijte $addToSet operátor
    var filter = {
        _id: mongoose.Types.ObjectId('<USER_ID>')
    };
    
    var update = {
        $addToSet: {
            timings: {
                startTime: "",
                endTime: "",
                elapsedTime: ""
            }
        }
    };
    
    db.collection.update(filter, update);

Poznámka:Vyžadovat mongoose první

const mongoose = require('mongoose');

Opravte svůj kód podle níže uvedeného, ​​také nemůžete získat přesné ID dílčího dokumentu, ale můžete získat aktualizovaný kořenový dokument -

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



  1. Jak odstranit prvek z dvojitě vnořeného pole v dokumentu MongoDB.

  2. vrátit dotaz na základě data

  3. Porovnání vzorů nasazení pro MongoDB

  4. Aktualizace hlubokého záznamu v MongoDb