使用 MongoVUE 从文档中删除“密钥”很容易 - 只需在查看模式下右键单击并选择“删除”。
但是,如果您想从集合中删除整个子文档,似乎不存在这样的选项。
有谁知道是否有一种快速/简单的方法可以使用 GUI 从集合中删除子文档?(即不诉诸查询)
这有点棘手,因为您不能仅通过单击 GUI 来删除整个集合的键。选择要删除密钥的集合,然后单击更新按钮。现在 mongoVUE 将显示更新视图。
在“输入查找 Json”面板中,您必须输入以下代码:
{ "keyToDelete": { $exists : true } }
在另一个面板“输入更新 Json”上输入以下内容:
{ $unset : { "keyToDelete" : 1} }
现在单击“更新”按钮运行查询,键“keyToDelete”将不再出现在所选集合中。
到目前为止 hiroorih
这确实很棘手,尤其是对于像我这样刚接触 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 } } } }
希望能帮助到你!