2011-10-09 63 views
2

通過MongoVUE從文檔中刪除「key」非常簡單 - 只需右鍵單擊查看模式並選擇「刪除」即可。使用MongoVUE從MongoDB中的集合中刪除特定的子文檔

但是,如果要從集合中刪除整個子文檔,似乎不存在此類選項。

有誰知道是否有一種快速/簡單的方法來刪除使用GUI的集合中的子文檔?(即不訴諸查詢)

回答

4


這有點棘手,因爲只需單擊GUI即可刪除整個集合的密鑰。 選擇你想要刪除密鑰的地方,然後點擊更新按鈕。現在mongoVUE將顯示更新視圖。
在面板「中輸入查找的Json」你必須把下面的代碼:
{ "keyToDelete": { $exists : true } }

在其他面板「中輸入更新的Json」把下面的:
{ $unset : { "keyToDelete" : 1} }

現在點擊「更新'-Button運行查詢,'keyToDelete'鍵不會再出現在所選集合中。

到目前爲止 hiroorih

+1

謝謝,但這似乎打敗了使用GUI的一點 - 我不妨使用這個shell。不明白爲什麼MongoVUE不提供這個非常基本的功能。在Windows上似乎沒有用於MongoDB的生產級管理GUI :( – UpTheCreek

2

這的確是棘手的,特別是對於像我這樣的人新的MongoDB(和JSON)。我還試圖從MongoVUE中刪除特定的子文件,但我無法弄清楚如何。最後我找到了解決方案,我想在這裏分享,以防其他人遇到同樣的問題。

我有這個文件(用戶):

{ 
    "_id" : ObjectId("510d3e719d0d3627ec73abe4"), 
    "Name" : "John Doe", 
    "Country" : "USA", 
    "Highscores" : [{ 
     "Score" : 15, 
     "DateStamp" : ISODate("2013-02-02T11:35:51.905Z") 
    }, { 
     "Score" : 19, 
     "DateStamp" : ISODate("2013-02-02T11:36:04.886Z") 
    }, { 
     "Score" : 40, 
     "DateStamp" : ISODate("2013-02-02T11:36:21.714Z") 
    }] 
} 

我想刪除上述20分,即只有最後的高分,並留下兩個子文件清單。我可以通過這個查詢找到我的文檔(整個用戶文檔):

{ "Highscores.Score": { $gt: 20 } } 

但是,如果我打開一個MongoVUE刪除窗口並輸入搜索查詢它會刪除整個用戶,包括所有的高分。我不能讓$取消設置刪除子文件經過一番搜索,我發現這個更新JSON是關鍵:

{ $pull : { Highscores : { Score : { $gt: 20 } } } } 

希望它能幫助!