$and will not do the job, since the 2nd $or will not validate if the first one fails.
From the Mongo man page:
The $and operator uses short-circuit evaluation. If the first expression (e.g. ) evaluates to false, MongoDB will not evaluate the remaining expressions.