2012-08-21 3 views
0

J'ai un document appelé login_info. Il dispose de deux champs:Suppression d'une ligne d'un document incorporé dans un moteur mongo

  • nom
  • mot de passe
  • Lieu

Location est un document incorporé avec deux champs:

  • datetime
  • ville

Il existe des données dans le document incorporé et je souhaite en supprimer une ligne. Par exemple: Je dois supprimer toutes les lignes avec l'emplacement "Canada". Comment puis-je faire cela dans un moteur mongo? toute aide

+0

Il n'y a pas de ligne dans MongoDB. Que voulez-vous supprimer? Le document complet qui contient location.location = 'canada'? Seul le sous-document? BTW vous ne devriez pas avoir un champ avec le même nom dans un document et dans un sous-document, c'est la meilleure façon d'avoir un bug;) – AlphaB

+0

ouais je veux juste supprimer le sous-document seulement. oui, je vais changer le nom «emplacement» en «ville». –

Répondre

1

Essayez cette

db.login_info.update({}, {$pull:{location:{city:"Canada"}}}) 

Ok essayer au lieu

db.login_info.update({ "location.city" : { $exists : true } }, { $unset : { "location.city" : "Canada" } }, false, true); 

Cela supprimera toutes les "lignes" où la ville est "Canada".

+0

Si vous devez modifier plusieurs documents, ajoutez le modificateur "multi". – AlphaB

+0

hey jamjam ne fonctionne pas –

+0

le signe $ dans les deux codes montrent erreur. son erreur lexicale. –

Questions connexes