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

NODE.jsとExpressを使用してMongoDBデータをネストされた配列に投稿する方法

    Model.prototype.updateを使用できます マングースでサブドキュメントのtimingsを更新します 。

    ただし、2つのシナリオがあります-

    1. 重複をチェックせずにエントリをプッシュする場合は、 $push オペレーター
        var filter = {
            _id: mongoose.Types.ObjectId('<USER_ID>')
        };
        
        var update = {
            $push: {
                timings: {
                    startTime: "",
                    endTime: "",
                    elapsedTime: ""
                }
            }
        };
        
        db.collection.update(filter, update);
    
    1. 個別のエントリのみをプッシュする場合は、$addToSet オペレーター
        var filter = {
            _id: mongoose.Types.ObjectId('<USER_ID>')
        };
        
        var update = {
            $addToSet: {
                timings: {
                    startTime: "",
                    endTime: "",
                    elapsedTime: ""
                }
            }
        };
        
        db.collection.update(filter, update);
    

    注:mongooseが必要です 最初

    const mongoose = require('mongoose');
    

    コードを以下に修正します。また、正確なサブドキュメントのIDを取得することはできませんが、更新されたルートドキュメントを取得することはできます-

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



    1. Hiredis Redisライブラリは非同期コールバック用の独自のスレッドを作成しますか?

    2. NodeJSで複数のMongoDBドキュメントを更新しても機能しないようです

    3. RealmとSwiftUIを使用して1週間でチャートトッピングアプリを作成する方法

    4. Mongo:一致集計クエリの日付は無視されているようです