MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zapisać tablicę wejść do schematu podrzędnego w zagnieżdżonym schemacie mangusty?

Możesz użyć atomowej metody aktualizacji, takiej jak findOneAndUpdate() dla swojego posta, w którym możesz określić upsert opcja. Jeśli upsert ma wartość prawda i żaden dokument nie spełnia kryteriów zapytania, findOneAndUpdate() wstawia pojedynczy dokument. Tutaj możesz również użyć natywnego$ wciśnij operatora, aby przekazać nowe pytanie i odpowiedzi do tablicy pytań, zamiast używać pętli, gdy możesz pozwolić mongo wykonać całą pracę na serwerze.

Poniższy przykład pokazuje, jak możesz zmienić kod:

var express = require('express');
var router = express.Router();
var Survey = require('../models/QBank');

router.post('/', function(req, res, next){ 
    Survey.findOneAndUpdate(
        { "surveyname": req.body.sname }, /* <query> */
        { /* <update> */
            "$push": {
                "question": {
                    "que": req.body.que,
                    "ans1": req.body.ans1,
                    "ans2": req.body.ans2,
                    "ans3": req.body.ans3,
                    "ans4": req.body.ans4
                }
            } 
        },
        { "upsert": true }, /* <options> */
        function(err, doc){ /* <callback> */
            if(err) res.json(err);
            else
                req.flash('success_msg', 'Question saved to QBank');  
            res.redirect("/CreateSurvey");
        }
    );
});

module.exports = router;

W powyższym, pola i wartości obu i parametry są tworzone, jeśli parametr zawiera wyrażenia operatora aktualizacji. Aktualizacja tworzy dokument bazowy z klauzul równości w parametr, a następnie stosuje wyrażenia aktualizacji z parametr.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Najlepszy sposób na modelowanie systemu głosowania w MongoDB

  2. Policz komentarze w poście w Meteor

  3. React.js:surowy ciąg HTML nie jest rozpoznawany jako elementy HTML z Node.js

  4. Czy mongodb automatycznie tworzy indeks w polu _id osadzonych dokumentów?

  5. Google Cloud Platform – nie można połączyć się z mongodb