我有一個集合,其中包含一個球隊陣列並且包含一個球員陣列。我想從玩家數組中刪除。 我想我知道很熱從數組中刪除,但我不能讓它工作。 有一種情況是,它從團隊數組中刪除了所有元素。從陣列中拉出陣列
這是怎麼文檔的樣子:
"teams" : [
{
"_guid" : "5c5b3bc0-a957-11e5-b909-b7a1cbe2c8be",
"teamname" : "Ping-Win_team",
"_id" : ObjectId("567a68f6a7c726540b2d746b"),
"players" : [
ObjectId("567a68f6a7c726540b2d7469"),
ObjectId("567a68f7a7c726540b2d746c")
]
}
],
我的試用期:
db.lobbies.update({ _id: ObjectId('567a68f6a7c726540b2d746a') }, { $pull: { 'teams': { 'players.$': ObjectId('567a68f7a7c726540b2d746c') }}})
感謝您的幫助, 阿科什
感謝您的答案,它工作正常! 但是,你能解釋一下嗎?爲什麼你改成了where子句,通過teams.players而不是父文檔_id找到?我只是好奇,謝謝:) – Akos
@Akos由於位置**'$'**操作符充當匹配查詢文檔的第一個元素的佔位符,因此數組字段必須作爲查詢文檔的一部分出現,因此您在你的查詢中需要'teams'數組字段。 – chridam