2011-10-09 2 views
2

Supprimer une 'clé' d'un document avec MongoVUE est facile - faites un clic droit en mode affichage et sélectionnez 'supprimer'. Toutefois, aucune option de ce type ne semble exister si vous souhaitez supprimer un sous-document entier d'un assemblage.Supprimer un sous-document spécifique de la collection dans MongoDB en utilisant MongoVUE

Est-ce que quelqu'un sait s'il existe un moyen rapide/simple de supprimer des sous-documents de collections à l'aide de l'interface graphique? (à savoir ne pas avoir recours à des requêtes)

Répondre

4


il est un peu difficile, parce que vous ne pouvez pas supprimer une clé pour toute une collection en cliquant l'interface graphique. sélectionnez votre collection où vous voulez supprimer la clé et cliquez sur le bouton de mise à jour. Maintenant, mongoVUE affichera la vue de mise à jour.
Dans le panneau 'Entrée Trouver Json' vous devez mettre le code suivant:
{ "keyToDelete": { $exists : true } }

autre panneau 'EntEr Update Json' mettez les éléments suivants:
{ $unset : { "keyToDelete" : 1} }

cliquez maintenant « Mettre à jour '-Button pour exécuter la requête et la clé' keyToDelete 'n'apparaîtra plus dans la collection sélectionnée.

jusqu'à présent hiroorih

+1

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

2

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!

Questions connexes