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

サブドキュメントのブール値を切り替えます

    あなたが主張する結果を私は見ることができません、それはそれが私と他の世界のために働くことを意味します。単一のスクリプト例としての要約リストは次のとおりです。

        var async = require('async'),
            mongoose = require('mongoose'),
            Schema = mongoose.Schema;
    
        mongoose.connect('mongodb://localhost/test');
    
        var invitationSchema = new Schema({
          "ID": { "type": Schema.Types.ObjectId },
          "Accepted": Boolean
        });
    
        var userSchema = new Schema({
          "Invitation": [invitationSchema]
        });
    
    
        var User = mongoose.model( 'User', userSchema );
    
        User.find({},'Invitation',function(err,docs) {
          if (err) throw err;
          var results = [];
    
          async.each(docs,function(doc,callback) {
            async.each(doc.Invitation, function(invite,callback) {
              User.findOneAndUpdate(
                { "_id": doc._id, "Invitation._id": invite._id },
                { "$set": { "Invitation.$.Accepted": !invite.Accepted } },
                function(err,doc) {
                  results.push(doc);
                  callback(err);
                }
              );
            },callback);
          },function(err) {
            if (err) throw err;
            console.log( results.slice(-1)[0] );
            process.exit();
          });
        });
    

    そのため、要求に応じて両方の値を明確に「切り替え」、完全に機能します。

    これは私が一発で得た結果です:

    { _id: 54be2f3360c191cf9edd7236,
      Invitation:
       [ { __v: 0,
           ID: 54afaabd88694dc019d3b628,
           __t: 'USER',
           _id: 54b5022b583973580c706784,
           Accepted: true },
         { __v: 0,
           ID: 54af6ce091324fd00f97a15f,
           __t: 'USER',
           _id: 54bde39cdd55dd9016271f14,
           Accepted: true } ] }
    



    1. AWSマイクロインスタンスにRedisをインストールします

    2. アプリケーションを起動できませんでした(ポート8080)が利用できません

    3. mongoDb dockerインスタンスのmongodumpを実行するための正しい構文?

    4. JavaプロデューサーからMongodbへのトピックデータのシンク