$coll->update(
array(
"uid"=(int)$uid,
"status"=>1,
"time"=>array('$gt'=>0,'$lte'=>$time)
),
array(
'$set'=>array("status"=>0)
)
);
如果你看不懂 PHP,上面代码的 CLI 版本:
db.we.update({"uid":1,"status":1,"time":{"$lte":1324403899}},{"$set":{status:0}})
其中 time
是一个时间戳整数,status 是 int 0 或 1。
最佳答案
这是 MongoDB 的默认更新行为。如果您想一次更新多个文档,您必须明确提供 multi 标志:
db.collection.update( criteria, objNew, upsert, multi )
所以你必须使用
db.we.update({"uid":1, "status":1, "time" : {"$lte":1324403899}},
{"$set":{status:0}},
false,
true);
相反。
来自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.
关于php - 为什么这个更新查询只更新一条记录一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580159/