26

I want to delete all documents in a collection in java. Here is my code:

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

Is this the correct way to do this?

I am using MongoDB 3.0.2

2
  • you want to remove specific matched documents or drop whole collection? Commented Jun 25, 2015 at 18:52
  • All the documents in the collection. Commented Jun 25, 2015 at 18:53

4 Answers 4

30

Using API >= 3.0:

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

To drop the collection (documents and indexes) you still can use:

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

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

Sign up to request clarification or add additional context in comments.

Comments

21

To remove all documents use the BasicDBObject or DBCursor as follows:

MongoClient client = new MongoClient("10.0.2.113" , 27017); MongoDatabase db = client.getDatabase("maindb"); MongoCollection collection = db.getCollection("mainCollection") BasicDBObject document = new BasicDBObject(); // Delete All documents from collection Using blank BasicDBObject collection.deleteMany(document); // Delete All documents from collection using DBCursor DBCursor cursor = collection.find(); while (cursor.hasNext()) { collection.remove(cursor.next()); } 

1 Comment

Whats the difference between these 2 approaches ?
10

If you want to remove all documents in collection then used below code :

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

Or If you want to drop whole collection then used this :

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

1 Comment

Advise against using drop() to truncate a collection if you are going to keep using it. You may get an erratic error 'Operation aborted because: all indexes on collection dropped'. This is apparently because index destroy is asynchronous.
0

For newer mongodb drivers you can use FindIterable to remove all documents in collection.

FindIterable<Document> findIterable = collection.find(); for (Document document : findIterable) { collection.deleteMany(document); } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.