Il est en effet difficile, surtout pour les nouveaux à MongoDB (et JSON) comme moi-même. J'essayais aussi de supprimer des sous-documents spécifiques de MongoVUE mais je ne pouvais pas comprendre comment. Finalement, j'ai trouvé la solution et je voulais la partager ici au cas où d'autres personnes rencontreraient le même problème.
J'ai ce document (utilisateur):
{
"_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")
}]
}
Je veux supprimer des scores supérieurs à 20, à savoir que le dernier highscore et laisser la liste avec deux documents sous. Je peux trouver mon document (l'ensemble du document utilisateur) par cette requête:
{ "Highscores.Score": { $gt: 20 } }
Mais si j'ouvre une fenêtre Supprimer dans MongoVUE et entrez la requête de recherche, il supprime l'ensemble de l'utilisateur, y compris tous les meilleurs scores. Je ne pouvais pas effacer $ supprimer le document sous et après quelques recherches, je trouve que cette mise à jour JSON était la clé:
{ $pull : { Highscores : { Score : { $gt: 20 } } } }
Hope it helps!
Merci, mais cela semble aller à l'encontre de l'utilisation d'une interface graphique - je pourrais aussi bien utiliser le shell pour cela. Je ne comprends pas pourquoi MongoVUE ne fournit pas cette fonctionnalité très basique. Il semble y avoir aucune interface graphique de gestion de la production pour MongoDB sur Windows :( – UpTheCreek