2012-06-01 1 views
2

Avec Spring Data (1.1.0.M1), existe-t-il un moyen de déterminer combien de documents ont été supprimés?Combien de documents ont été supprimés dans MongoDB

Actuellement, j'utilise la méthode remove() sur la classe MongoTemplate, mais elle ne renvoie aucune sorte d'information sur l'opération.

Si ce n'est pas à travers MongoTemplate, existe-t-il une façon différente de supprimer des documents et de déterminer combien ont été supprimés?

Répondre

9

Lorsque vous écrivez des documents dans MongoDB (y compris en les supprimant), vous pouvez appeler getLastError() pour voir l'effet de votre dernière opération d'écriture. Le problème que vous avez est que quand il n'y a pas d'erreur, vous voulez toujours savoir combien d'objets (documents) ont été affectés par votre opération.

Dans le shell, vous pouvez voir les détails en examinant l'objet renvoyé par getLastErrorObj(). En Java, le pilote Java Mongo fournit methods pour faire l'équivalent.

Dans le cas d'une opération de suppression, le champ "n" correspond au nombre de documents affectés. Voici un petit extrait d'un exemple:

import com.mongodb.WriteResult; 
... 
    WriteResult wr = collection.remove(new BasicDBObject()); // removes everything 
    System.out.println(wr.getN());  // prints the number of removed documents 
0

Je n'ai pas beaucoup d'expérience avec MongoDB car je suis nouveau, je ne sais pas si ce que je suis sur le point de recommander s'applique à votre situation. Lors du passage du flag safe = true à une requête, il renvoie une clé 'n' qui indique la quantité de lignes affectées dans la requête. Vous devriez y jeter un coup d'œil ..

Questions connexes