php - Why this update query only update one record once

Solution:
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.
Answer
Solution:
Now MongoDB is using updateMany to update multiple documents: db.collection.updateMany(, , )
db.collection.updateMany(criteria, objNew)
Answer
Solution:
Seeing as this was done in PHP initially, this may be of use to anyone using PHP:
$collection->update(
array("uid"=>(int)$uid,"status"=>1,"time"=>array('$gt'=>0,'$lte'=>$time)), //search criteria
array('$set'=>array('status'=>0)), //update criteria
array('multiple'=>true) //options
);
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: script cache:clear returned with error code 255
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.