使用MongoVUE从文档中删除“密钥”很简单 - 只需在查看模式下右键单击并选择“删除”。
但是,如果要从集合中删除整个子文档,似乎不存在这样的选项。
有没有人知道是否有一种快速/简单的方法可以使用GUI从集合中删除子文档?(即不诉诸查询)
答案 0 :(得分:4)
这有点棘手,因为只需点击GUI就无法删除整个集合的密钥。
选择要删除密钥的集合,然后单击“更新”按钮。现在mongoVUE将显示更新视图。
在“输入查找Json”面板中,您必须输入以下代码:
{ "keyToDelete": { $exists : true } }
在另一个面板'Enter Update Json'中输入以下内容:
{ $unset : { "keyToDelete" : 1} }
现在点击“更新”按钮运行查询,“keyToDelete”键不再出现在所选集合中。
到目前为止 hiroorih答案 1 :(得分: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中打开一个删除窗口并输入搜索查询,它将删除整个用户,包括所有高分。我无法获取$ unset来删除子文档,经过一些搜索,我发现这个更新JSON是关键:
{ $pull : { Highscores : { Score : { $gt: 20 } } } }
希望它有所帮助!