मैं उस परिणाम को नहीं देख सकता जिसका आप दावा करते हैं, जिसका अर्थ है कि यह मेरे और बाकी दुनिया के लिए काम करता है। यहाँ एक एकल स्क्रिप्ट उदाहरण के रूप में संक्षिप्त सूची दी गई है:
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 } ] }