Mongoose update deep arrays

Trying to update a document in an array using $set but it looks like it needs to be done a different way. Here is the code I am trying:

Schema.update({ _id: id, 'customers._id': customerID }, { $set: {
    'customers.$.addresses.isDefault': false
  }}, function (err) {
    if (err) // err
    // do something
});

It looks like it doesn't like 'customers.$.addresses.isDefault'. My data looks like this:

{
  _id: ObjectId,
  customers: [{
    _id: ObjectId,
    addresses: [{
      _id: ObjectId,
      isDefault: Boolean
    }]
  }]
}

I am trying to set isDefault for ALL addresses on that customer to false.

UPDATE: Here is the error it gives me: MongoError: cannot use the part (addresses of customers.0.addresses.isDefault) to traverse the element

Ended up just looping through the array:

Schemas.Client.findOne({ _id: id, 'customers._id': customerID }).select('customers.$.addresses').exec(function (err, client) {
  if (err) { return next(err); }
  if (!client) { return next(); }
  if (client.customers[0].addresses.length) {
    var addresses = client.customers[0].addresses;
    for (var i = 0; i < addresses.length; i++) {
      addresses[i].isDefault = false;
    }
    client.save(function (err) {
      if (err) { return next(err); }
      // finish
    });
  }
});