MongoDB:如何在 MongoDB Shell 中删除集合的所有记录?
Posted
技术标签:
【中文标题】MongoDB:如何在 MongoDB Shell 中删除集合的所有记录?【英文标题】:MongoDB: How To Delete All Records Of A Collection in MongoDB Shell? 【发布时间】:2018-03-04 05:58:05 【问题描述】:我试过了
db.users.remove(*)
虽然它返回错误,但我该如何清除所有记录?
【问题讨论】:
db.getCollection('collectionname').remove() 【参考方案1】:使用deleteMany
函数(docs):
假设您的收藏名为users
:
db.users.deleteMany()
deleteMany
将 filter 作为参数,并将 empty document 作为过滤器传递,相当于要求删除集合的所有成员。
请注意,remove
应该仍然有效,但您需要传递相同的空文档:
db.users.remove()
但是,remove
已被弃用,如果您的 mongo 安装是最新的,使用 remove
应该会导致弃用警告,指示您应该改用首选方法之一。从 1.0.7 开始:
DeprecationWarning:Collection.remove() 已弃用。使用 deleteOne, deleteMany、findOneAndDelete 或 bulkWrite。
【讨论】:
【参考方案2】:请尝试使用以下代码从所有集合中删除所有文档,除了从“系统”开始。
use('DatabaseName');
db.getCollectionNames()
.filter((collectionName) => collectionName.indexOf("system.") === -1)
.forEach((collectionName) =>
print(`Removing: $db[collectionName].count() documents from $collectionName`);
db[collectionName].deleteMany();
);
此代码也可以在 MongoDB 游乐场中运行。 它还将打印每个集合删除的文档数。
【讨论】:
【参考方案3】:这是删除 MongoDB shell 或 MongoDB Compass shell (_MongoSH) 中集合的所有记录的命令。。 p>
show dbs -> to list all the database
use test-database -> to select the database
db.getCollection('orders').deleteMany() -> to select the collection and deletes all the data.
或者
show dbs -> to list all the database
use test-database -> to select the database
db.orders.remove() -> to select the collection and deletes all the data.
【讨论】:
【参考方案4】:从 cmd 中的集合中删除所有文档:
cd C:\Program Files\MongoDB\Server\4.2\bin
mongo
use yourdb
db.yourcollection.remove( )
这个例子是为 MongoDB 4.2 制作的
【讨论】:
【参考方案5】:要删除所有集合中的所有文档:
db.getCollectionNames().forEach( function(collection_name)
if (collection_name.indexOf("system.") == -1)
print ( ["Removing: ", db[collection_name].count(), " documents from ", collection_name].join('') );
db[collection_name].remove();
);
【讨论】:
【参考方案6】:db.users.count()
db.users.remove()
db.users.count()
【讨论】:
【参考方案7】:您可以从 MongoDB 中的一个集合中删除所有文档,您可以使用以下方法:
db.users.remove()
或者,您也可以使用以下方法:
db.users.deleteMany()
关注以下 MongoDB documentation,了解更多详情。
要从集合中删除所有文档,请将空过滤器文档
传递给
db.collection.deleteMany()
或db.collection.remove()
方法。
【讨论】:
【参考方案8】:remove()
的参数是一个过滤文档,因此传入一个空文档意味着“全部删除”:
db.user.remove()
但是,如果您确实要删除所有内容,可能最好还是删除该集合。虽然这可能取决于您是否在集合上有用户定义的索引,即在删除集合后准备集合的成本是否超过 remove()
调用与 drop()
调用的较长持续时间。
更多详情in the docs.
【讨论】:
remove
现在已弃用。改用db.user.deleteMany()
@MahdiehShavandi 查看 Mongo shell 文档我看不到任何说 remove
已弃用 (docs.mongodb.com/manual/reference/method/db.collection.remove)。您能否提供链接或引用来支持该声明?
对不起,我最好说:它会在未来的版本中被弃用。它只是在终端中记录此声明。
弃用警告:Collection.remove() 已弃用。使用 deleteOne、deleteMany、findOneAndDelete 或 bulkWrite。以上是关于MongoDB:如何在 MongoDB Shell 中删除集合的所有记录?的主要内容,如果未能解决你的问题,请参考以下文章