2

使用 MongoVUE 从文档中删除“密钥”很容易 - 只需在查看模式下右键单击并选择“删除”。

但是,如果您想从集合中删除整个子文档,似乎不存在这样的选项。

有谁知道是否有一种快速/简单的方法可以使用 GUI 从集合中删除子文档?(即不诉诸查询)

4

2 回答 2

4


这有点棘手,因为您不能仅通过单击 GUI 来删除整个集合的键。选择要删除密钥的集合,然后单击更新按钮。现在 mongoVUE 将显示更新视图。
在“输入查找 Json”面板中,您必须输入以下代码:
{ "keyToDelete": { $exists : true } }

在另一个面板“输入更新 Json”上输入以下内容:
{ $unset : { "keyToDelete" : 1} }

现在单击“更新”按钮运行查询,键“keyToDelete”将不再出现在所选集合中。

到目前为止 hiroorih

于 2011-12-01T12:13:02.137 回答
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 } } } }

希望能帮助到你!

于 2013-02-02T18:58:42.483 回答