MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chuyển đổi giá trị boolean của các tài liệu con

Tôi không thể thấy kết quả mà bạn yêu cầu, điều đó có nghĩa là kết quả đó phù hợp với tôi và phần còn lại của thế giới. Đây là danh sách tóm tắt dưới dạng một ví dụ tập lệnh duy nhất:

    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();
      });
    });

Vì vậy, điều đó rõ ràng "chuyển đổi" cả hai giá trị theo yêu cầu và hoạt động hoàn hảo.

Đây là kết quả của tôi trong một lần chụp:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để loại bỏ bộ sưu tập MongoDB của biểu mẫu TTL?

  2. Mongoose findOne on model có trả lại lời hứa không?

  3. Làm thế nào để truy vấn phạm vi ngày trên bộ sưu tập MongoDB nơi ngày ISO được lưu trữ trong trường chuỗi?

  4. Laravel 5 Tổng số cột được nhân cho mongo DB

  5. Mongoose không thể kết nối nếu không có Internet