$coll->update(
array(
\"uid\"=(int)$uid,
\"status\"=>1,
\"time\"=>array(\'$gt\'=>0,\'$lte\'=>$time)
),
array(
\'$set\'=>array
This is the MongoDB default behaviour for updates. If you want to update multiple documents at once, you'll explicitly have to provide the multi flag:
db.collection.update( criteria, objNew, upsert, multi )
so you'd have to use
db.we.update({"uid":1, "status":1, "time" : {"$lte":1324403899}},
{"$set":{status:0}},
false,
true);
instead.
From the documentation:
If you are coming from SQL, be aware that by default, update() only modifies the first matched object. If you want to modify all matched objects, you need to use the multi flag.