如何使用mongo shell更新一个数组中的所有元素?
pradb>db.t1226_1.find()
{ "_id" : 1, "grades" : [ 95, 92, 90 ] }
{ "_id" : 2, "grades" : [ 98, 100, 102 ] }
{ "_id" : 3, "grades" : [ 95, 110, 100 ] }
pradb>db.t1226_1.find({grades:{$gte:100}});
{ "_id" : 2, "grades" : [ 98, 100, 102 ] }
{ "_id" : 3, "grades" : [ 95, 110, 100 ] }
***如果要把上述数组中>=100的元素都更新成333,可以采用如下命令,但从结果看只能更新每个文档中第一个>=100的元素
pradb>db.t1226_1.update({grades:{$gte:100}},{$set:{"grades.$":333}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
pradb>db.t1226_1.find()
{ "_id" : 1, "grades" : [ 95, 92, 90 ] }
{ "_id" : 2, "grades" : [ 98, 333, 102 ] } <---只更新了每个文档中第一个满足条件的元素
{ "_id" : 3, "grades" : [ 95, 333, 100 ] }
如果要同时更新所有>=100的元素,使用什么方法可以实现呢?