$coll->update(
array(
"uid"=(int)$uid,
"status"=>1,
"time"=>array('$gt'=>0,'$lte'=>$time)
),
array(
'$set'=>array("status"=>0)
)
);
If you can't read PHP, CLI version of above code:
db.we.update({"uid":1,"status":1,"time":{"$lte":1324403899}},{"$set":{status:0}})
where time
is a timestamp integer, and status is int 0 or 1.
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.
Now MongoDB is using updateMany to update multiple documents: db.collection.updateMany(, , )
db.collection.updateMany(criteria, objNew)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With