Lets learn how to remove documents from the collection using remove() and drop() methods.
test database, names collection
> db.names.find().pretty()
{
"_id" : ObjectId("53c6392a2eea8062e084cb57"),
"Company" : "Google",
"Product" : "Nexus",
"No" : 1
}
{
"_id" : ObjectId("53c639392eea8062e084cb58"),
"Company" : "Apple",
"Product" : "Mac",
"No" : 2
}
{
"_id" : ObjectId("53c63b26b003603dfdcf8c52"),
"Company" : "Xiaomi",
"Product" : "Mi3",
"No" : 3
}
{
"_id" : ObjectId("53c63bd1b003603dfdcf8c53"),
"Product" : "Smart Watch",
"No" : 4,
"Company" : "Sony"
}
We have 4 documents in “names” collection.
remove() method, with simple condition
> db.names.remove({"No": 4});
WriteResult({ "nRemoved" : 1 })
> db.names.find().pretty()
{
"_id" : ObjectId("53c6392a2eea8062e084cb57"),
"Company" : "Google",
"Product" : "Nexus",
"No" : 1,
"IT" : "true"
}
{
"_id" : ObjectId("53c639392eea8062e084cb58"),
"Company" : "Apple",
"Product" : "Mac",
"No" : 2,
"IT" : "true"
}
{
"_id" : ObjectId("53c63b26b003603dfdcf8c52"),
"Company" : "Xiaomi",
"Product" : "Mi3",
"No" : 3,
"IT" : "true"
}
Here the document with “No: 4” was removed from the collection.
Removing Documents: MongoDB
remove() method, with comparison condition
> db.names.remove({"No": {$gt: 2}});
WriteResult({ "nRemoved" : 1 })
> db.names.find().pretty()
{
"_id" : ObjectId("53c6392a2eea8062e084cb57"),
"Company" : "Google",
"Product" : "Nexus",
"No" : 1,
"IT" : "true"
}
{
"_id" : ObjectId("53c639392eea8062e084cb58"),
"Company" : "Apple",
"Product" : "Mac",
"No" : 2,
"IT" : "true"
}
Here whatever documents which has “No” greater than 2 got removed.
remove() method to remove all documents from the collection
> db.names.remove({});
WriteResult({ "nRemoved" : 2 })
> db.names.find().pretty()
> show collections
names
system.indexes
> db.system.indexes.find().pretty()
{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.names" }
If we pass empty argument to remove() method, it matches with all the documents present in the collection, hence removes all the documents one-by-one.
But it doesn’t remove the contents/documents/index present in “system.indexes” collection.
drop() method
> db.names.find()
> db.names.insert({"Company": "Apple", "Product": "iPhone", "No": 1});
WriteResult({ "nInserted" : 1 })
> db.names.insert({"Company": "Google", "Product": "Nexus", "No": 2});
WriteResult({ "nInserted" : 1 })
> db.names.find().pretty()
{
"_id" : ObjectId("53c6c5d95879b1ff1f0b8356"),
"Company" : "Apple",
"Product" : "iPhone",
"No" : 1
}
{
"_id" : ObjectId("53c6392a2eea8062e084cb57"),
"Company" : "Google",
"Product" : "Nexus",
"No" : 1,
"IT" : "true"
}
> db.names.drop();
true
> db.names.find().pretty()
> db.system.indexes.find().pretty()
Since “names” collection was empty, we inserted 2 documents into it. Now we applied drop() method on the collection, which drops all the document present in the collections at once. It also removes the document/index/content present inside “system.indexes” collection.
Note: If you want to remove/drop all the documents present inside the collection, make use of drop() method, as it removes all the documents at once, its more efficient than remove({}) method which removes documents one by one. Use remove() method, when you want to remove one or a set of documents from the collection.