MongoDB 遞增巢狀陣列中值?
你可以為此使用位置運算子 $。為了理解上述概念,讓我們建立一個包含文件的集合。建立包含文件的集合的查詢如下所示 -
> db.incrementValueInNestedArrayDemo.insertOne( ... {"UniqueId":1, ... "StudentDetails": ... [ ... { ... "StudentId":101, ... "StudentMarks":97 ... }, ... { ... "StudentId":103, ... "StudentMarks":99 ... }, ... { ... "StudentId":105, ... "StudentMarks":69 ... }, ... { ... "StudentId":107, ... "StudentMarks":59 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5c77dd71fc4e719b197a12f7") }
在集合中使用 find() 方法顯示所有文件。查詢如下 -
> db.incrementValueInNestedArrayDemo.find().pretty();
以下是輸出 -
{ "_id" : ObjectId("5c77dd71fc4e719b197a12f7"), "UniqueId" : 1, "StudentDetails" : [ { "StudentId" : 101, "StudentMarks" : 97 }, { "StudentId" : 103, "StudentMarks" : 99 }, { "StudentId" : 105, "StudentMarks" : 92 }, { "StudentId" : 107, "StudentMarks" : 59 } ] }
以下是巢狀陣列中遞增值查詢 -
> db.incrementValueInNestedArrayDemo.update({UniqueId:1,"StudentDetails.StudentId":107}, {$inc:{"StudentDetails.$.StudentMarks":1}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
讓我們檢查巢狀陣列值在 StudentId 為 107 的上述集合中是否遞增 -
> db.incrementValueInNestedArrayDemo.find().pretty();
以下是輸出 -
{ "_id" : ObjectId("5c77dd71fc4e719b197a12f7"), "UniqueId" : 1, "StudentDetails" : [ { "StudentId" : 101, "StudentMarks" : 97 }, { "StudentId" : 103, "StudentMarks" : 99 }, { "StudentId" : 105, "StudentMarks" : 92 }, { "StudentId" : 107, "StudentMarks" : 60 } ] }
檢視示例輸出,“StudentMarks”欄位已從 59 更新為 60,表示遞增 1。
廣告