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