sql >> データベース >  >> NoSQL >> MongoDB

ネストされたマングーススキーマの子スキーマへの入力の配列を保存するにはどうすればよいですか?

    findOneAndUpdate() upsertを指定できる投稿用 オプション。 upsertの場合 trueであり、クエリ条件に一致するドキュメントはありません。 findOneAndUpdate() 単一のドキュメントを挿入します。ここで、ネイティブの $を使用することもできます。プッシュ 演算子を使用して、mongoにサーバー上のすべての作業を実行させることができる場合にループを使用するのではなく、新しい質問と回答を質問配列にプッシュします。

    次の例は、コードをリファクタリングする方法を示しています。

    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;
    

    上記では、両方の のフィールドと値 および の場合、パラメータが作成されます パラメータには、更新演算子式が含まれています。この更新により、 のequality句からベースドキュメントが作成されます。 パラメータを入力し、 から更新式を適用します パラメータ。



    1. カスタム_idフィールドDjangoMongoDBMongoEngine

    2. デプロイされたmeteorアプリでmongoシェルスクリプトをどのように実行しますか?

    3. MongoDBは配列の複数のレコードを更新します

    4. jenssegersによってMongoDB集計クエリをLaravelMongoDBに変換する方法