要更新多个元素,请使用$[]。$[]是一个全位置运算符,指示更新运算符应修改指定数组字段中的所有元素。
首先让我们创建一个包含文档的集合-
> db.demo385.insertOne({"ServerLogs": [ ... { ... "status":"InActive" ... }, ... { ... "status":"InActive" ... }, ... { ... "status":"InActive" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e5b6a7522064be7ab44e7f5") }
在find()
方法的帮助下显示集合中的所有文档-
> db.demo385.find().pretty();
这将产生以下输出-
{ "_id" : ObjectId("5e5b6a7522064be7ab44e7f5"), "ServerLogs" : [ { "status" : "InActive" }, { "status" : "InActive" }, { "status" : "InActive" } ] }
以下是更新MongoDB中数组中的多个元素的查询-
> db.demo385.update( ... { "_id" : ObjectId("5e5b6a7522064be7ab44e7f5") }, ... { "$set": { "ServerLogs.$[].status": "Active" }} ... ) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
在find()
方法的帮助下显示集合中的所有文档-
> db.demo385.find().pretty();
这将产生以下输出-
{ "_id" : ObjectId("5e5b6a7522064be7ab44e7f5"), "ServerLogs" : [ { "status" : "Active" }, { "status" : "Active" }, { "status" : "Active" } ] }