Java MongoDB: Supprimer le document
Dans ce didacticiel, nous vous montrons comment utilisercollection.remove()
pour supprimer des documents de la collection.
1. Données de test
Insérez 10 documents du numéro 1 à 10 pour les tests.
for (int i=1; i <= 10; i++) { collection.insert(new BasicDBObject().append("number", i)); }
2. DBCollection.remove()
Voir ci-dessous des extraits de code pour supprimer des documents.
Exemple 1
Obtenez le premier document et supprimez-le. Dans ce cas, le nombre = 1 est supprimé.
DBObject doc = collection.findOne(); //get first document collection.remove(doc);
Exemple 2
Place la requête dans unBasicDBObject
. Dans ce cas, le nombre = 2 est supprimé.
BasicDBObject document = new BasicDBObject(); document.put("number", 2); collection.remove(document);
Et l'opérateur?
Deux erreurs courantes:
1. Une requête comme celle-ci ne supprime que le nombre = 3.
BasicDBObject document = new BasicDBObject(); document.put("number", 2); document.put("number", 3); //override above value 2 collection.remove(document);
2. Bien essayé ci-dessous, mais une requête comme celle-ci ne fonctionnera pas, elle supprimera RIEN.
BasicDBObject document = new BasicDBObject(); Listlist = new ArrayList (); list.add(7); list.add(8); document.put("number", list); collection.remove(document);
Pour la requête "AND", vous devez utiliser l'opérateur "$ in" ou "$ and", voir l'exemple 5.
Exemple 3
Utilisez directementBasicDBObject
. Dans ce cas, le nombre = 3 est supprimé.
collection.remove(new BasicDBObject().append("number", 3));
Exemple 4
Place un opérateur$gt
dans un objetBasicDBObject
. Dans ce cas, le nombre = 10 est supprimé.
BasicDBObject query = new BasicDBObject(); query.put("number", new BasicDBObject("$gt", 9)); collection.remove(query);
Exemple 5
Place un opérateur$in
dans un objetBasicDBObject
, construit la requête dans ArrayList. Dans ce cas, le nombre = 4 et le nombre = 5 sont supprimés.
BasicDBObject query2 = new BasicDBObject(); Listlist = new ArrayList (); list.add(4); list.add(5); query2.put("number", new BasicDBObject("$in", list)); collection.remove(query2);
More MongoDB Operators
Pour plus d'opérateurs, lisez ceMongoDB operators quick reference.
Exemple 6
Utilisez le curseur pour supprimer tous les documents disponibles. (Non recommandé, préférez l'exemple 7)
DBCursor cursor = collection.find(); while (cursor.hasNext()) { collection.remove(cursor.next()); }
Exemple 7
Passez un BasicDBObject vide et tous les documents seront supprimés.
collection.remove(new BasicDBObject());
Exemple 8
Il supprime tous les documents et supprime la collection.
collection.drop();
Exemple 9
Leremove()
retournera un objetWrireResult
, il contient des informations utiles sur l'opération de suppression. Et vous pouvez utilisergetN()
pour obtenir le nombre de documents concernés.
WriteResult result = collection.remove(query2); System.out.println("Number of documents are deleted : " + result.getN());
3. Exemple complet
Exemple complet pour montrer les différentes façons de supprimer des documents.
package com.example.core; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; /** * Java MongoDB : Delete document * @author example */ public class App { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("yourdb"); // get a single collection DBCollection collection = db.getCollection("dummyColl"); //insert number 1 to 10 for testing for (int i=1; i <= 10; i++) { collection.insert(new BasicDBObject().append("number", i)); } //remove number = 1 DBObject doc = collection.findOne(); //get first document collection.remove(doc); //remove number = 2 BasicDBObject document = new BasicDBObject(); document.put("number", 2); collection.remove(document); //remove number = 3 collection.remove(new BasicDBObject().append("number", 3)); //remove number > 9 , means delete number = 10 BasicDBObject query = new BasicDBObject(); query.put("number", new BasicDBObject("$gt", 9)); collection.remove(query); //remove number = 4 and 5 BasicDBObject query2 = new BasicDBObject(); Listlist = new ArrayList (); list.add(4); list.add(5); query2.put("number", new BasicDBObject("$in", list)); collection.remove(query2); //print out the document DBCursor cursor = collection.find(); while(cursor.hasNext()) { System.out.println(cursor.next()); } collection.drop(); System.out.println("Done"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } }
Sortie…
{ "_id" : { "$oid" : "4dc7a6989e3a66c5faeee757"} , "number" : 6} { "_id" : { "$oid" : "4dc7a6989e3a66c5faeee758"} , "number" : 7} { "_id" : { "$oid" : "4dc7a6989e3a66c5faeee759"} , "number" : 8} { "_id" : { "$oid" : "4dc7a6989e3a66c5faeee75a"} , "number" : 9} Done