Удаление конкретного поддокумента из коллекции в MongoDB с использованием MongoVUE - PullRequest
2 голосов
/ 09 октября 2011

Удалить «ключ» из документа с помощью MongoVUE очень просто - просто щелкните правой кнопкой мыши в режиме просмотра и выберите «удалить».

Однако такой опции, по-видимому, не существует, если вы хотите удалить весь поддокумент из коллекции.

Кто-нибудь знает, существует ли быстрый / простой способ удаления вложенных документов из коллекций с использованием графического интерфейса? (т. Е. Не прибегать к запросам)

Ответы [ 2 ]

4 голосов
/ 01 декабря 2011

это немного сложно, потому что вы не можете удалить ключ для всей коллекции, просто щелкнув GUI.выберите свою коллекцию, в которой вы хотите удалить ключ, и нажмите кнопку обновления.Теперь mongoVUE покажет вид обновления.На панели «Enter Find Json» необходимо ввести следующий код:{ "keyToDelete": { $exists : true } }

На другой панели «Enter Update Json» введите следующее:{ $unset : { "keyToDelete" : 1} }

теперь нажмите кнопку «Обновить», чтобы выполнить запрос, и ключ «keyToDelete» больше не будет отображаться в выбранной коллекции.

пока hiroorih

2 голосов
/ 02 февраля 2013

Это действительно сложно, особенно для людей, плохо знакомых с 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 } } } }

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...