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的元素,使用什么方法可以實作呢?
uj5u.com熱心網友回復:
https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/官方檔案里面給了方法,驗證成功,給分吧

db.t1226_1.update(
{ },
{ $set: { "grades.$[element]" : 333} },
{ multi: true,
arrayFilters: [ { "element": { $gte: 100 } } ]
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/95179.html
標籤:MongoDB
