2015-06-25 13 views
8

Voglio eliminare tutti i documenti in una raccolta in java. Ecco il mio codice:Come eliminare tutti i documenti nella raccolta mongodb in java

MongoClient client = new MongoClient("10.0.2.113" , 27017); 
     MongoDatabase db = client.getDatabase("maindb"); 
     db.getCollection("mainCollection").deleteMany(new Document()); 

È questo il modo corretto di farlo?

Sto usando MongoDB 3.0.2

+0

si desidera rimuovere specifici documenti abbinati o eliminare tutta la collezione? – Yogesh

+0

Tutti i documenti nella raccolta. – Viratan

risposta

8

Per rimuovere tutti i documenti utilizzano il BasicDBObject o dbcursor come segue:

MongoClient client = new MongoClient("10.0.2.113" , 27017); 
MongoDatabase db = client.getDatabase("maindb"); 
DBCollection collection = db.getCollection("mainCollection") 

BasicDBObject document = new BasicDBObject(); 

// Delete All documents from collection Using blank BasicDBObject 
collection.remove(document); 

// Delete All documents from collection using DBCursor 
DBCursor cursor = collection.find(); 
while (cursor.hasNext()) { 
    collection.remove(cursor.next()); 
} 
+1

grazie, era quello che volevo – Viratan

+0

@Viratan Sei il benvenuto. – chridam

+0

Qual è la differenza tra questi 2 approcci? –

4

Se si desidera rimuovere tutti i documenti nella collezione allora utilizzati sottostante Codice:

db.getCollection("mainCollection").remove(new BasicDBObject()); 

O Se si vuole far cadere tutta la collezione poi utilizzati questo:

db.getCollection("mainCollection").drop(); 
+1

Consigliamo di non utilizzare drop() per troncare una raccolta se si intende continuare a utilizzarla. È possibile che si verifichino errori errati "Operazione interrotta perché: tutti gli indici sulla raccolta sono caduti". Ciò è apparentemente perché l'indice destroy è asincrono. – Wheezil

11

Utilizzando API> = 3.0:

MongoClient mongoClient = new MongoClient("127.0.0.1" , 27017); 
MongoDatabase db = mongoClient.getDatabase("maindb"); 
db.getCollection("mainCollection").deleteMany(new Document()); 

Per eliminare la raccolta (documenti e indici) è ancora possibile utilizzare:

db.getCollection("mainCollection").drop(); 

vedere https://docs.mongodb.org/getting-started/java/remove/#remove-all-documents