如果您尝试使用方法drop()
,那么它将删除有关集合的所有信息。索引速度很快。但是,如果您将使用方法remove()
,那么它将删除所有记录,但保留集合和索引。
让我们借助示例进行检查。
drop()
首先让我们创建一个包含文档的集合-
> db.dropWorkingDemo.createIndex({"FirstName":1}); { "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } > db.dropWorkingDemo.insertOne({"FirstName":"John"}); { "acknowledged" : true, "insertedId" : ObjectId("5cdd8742bf3115999ed511e9") }
以下是在find()
方法的帮助下显示集合中所有文档的查询-
> db.dropWorkingDemo.find();
这将产生以下输出-
{ "_id" : ObjectId("5cdd8742bf3115999ed511e9"), "FirstName" : "John" }
现在,我将使用drop()
-
> db.dropWorkingDemo.drop();
这将产生以下输出-
True
让我们检查使用该drop()
方法后是否存在索引-
> db.dropWorkingDemo.getIndexes();
这将产生以下输出-
[ ]
索引不存在。
remove()
现在,我们将检查该方法remove()
。首先让我们创建一个包含文档的集合-
> db.removeDemo.createIndex({"FirstName":1}); { "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } > db.removeDemo.insertOne({"FirstName":"John"}); { "acknowledged" : true, "insertedId" : ObjectId("5cdd8868bf3115999ed511ea") }
以下是在find()
方法的帮助下显示集合中所有文档的查询-
> db.removeDemo.find();
这将产生以下输出-
{ "_id" : ObjectId("5cdd8868bf3115999ed511ea"), "FirstName" : "John" }
让我们使用remove()
-
> db.removeDemo.remove({}); WriteResult({ "nRemoved" : 1 })
使用remove()
方法后,让我们检查索引是否存在-
> db.removeDemo.getIndexes();
这将产生以下输出-
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.removeDemo" }, { "v" : 2, "key" : { "FirstName" : 1 }, "name" : "FirstName_1", "ns" : "test.removeDemo" } ]
是的,存在索引。