您可以使用以下兩個步驟透過索引刪除數組元素-
第一步如下-
db.yourCollectionName.update({}, {$unset : {"yourArrayFieldName.yourIndexValue" : 1 }});
上述語法將在“yourIndexValue”的位置放置一個空值。之後,您需要從數組欄位中提取空值以從數組元素中刪除。
第二步如下 -
db.yourCollectionName.update({}, {$pull : {"yourArrayFieldName" : null}});
為了實作語法,讓我們用文件建立一個集合。使用文件建立集合的查詢如下 -
> db.removeArrayElementByItsIndexDemo.insertOne({"InstructorName":"David", "InstructorAge":28,"InstructorSubject":["MongoDB","MySQL","Java","SQL Server","PL/SQL"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c8abbfc6cea1f28b7aa0803") }
借助 find() 方法顯示集合中的所有文件。查詢如下 -
> db.removeArrayElementByItsIndexDemo.find().pretty();
以下是輸出 -
{ "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"), "InstructorName" : "David", "InstructorAge" : 28, "InstructorSubject" : [ "MongoDB", "MySQL", "Java", "SQL Server", "PL/SQL" ] }
這是透過索引刪除陣列元素的查詢。
第1 步- 查詢如下-
> db.removeArrayElementByItsIndexDemo.update({}, {$unset : {"InstructorSubject.2" : 1 }}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
#第2步驟 - 查詢如下-
> db.removeArrayElementByItsIndexDemo.update({}, {$pull : {"InstructorSubject" : null}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
讓我們檢查一下數組元素“Java”是否已刪除。查詢如下 -
> db.removeArrayElementByItsIndexDemo.find().pretty();
以下是輸出 -
{ "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"), "InstructorName" : "David", "InstructorAge" : 28, "InstructorSubject" : [ "MongoDB", "MySQL", "SQL Server", "PL/SQL" ] }
查看範例輸出,陣列元素「Java」已完全刪除。
以上是如何在 MongoDB 中透過索引刪除陣列元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!