从 MongoDB 中删除所有条目的有效方法是什么?

mongodbdatabasebig data analytics更新于 2026/1/13 5:37:17

如果您尝试使用 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" }

Now, I am going to use 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"
   }
]

Yes, index is present.


相关文章