2011-10-09 61 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 } } } } 

希望它能帮助!