我是MongoDB和MongoDB Compass的新手。
我在客户集合中有大约1000条记录。 如何通过MongoDB指南针一次删除所有记录。
非常感谢,
答案 0 :(得分:1)
如果您没有该集合上的索引,则可以删除整个集合,如docs所示。
但是,如果你有索引,删除集合也会删除索引,但删除整个事件然后重新创建集合和索引比删除所有文档({{1因为必须逐个文档释放它们占用的空间并删除它们在索引上的条目(如果有的话)。
这种方法唯一需要注意的是,在分片群集中,您可能会删除一个集合,即使丢弃报告为成功,该集合仍可能存在于某些节点中,从而在重新创建时会导致问题。
您可以在https://jira.mongodb.org/browse/SERVER-17397了解有关此db.collection.remove({})
问题及其解决方法的更多信息:
问题摘要
在分片群集中删除数据库/集合时,即使丢弃报告为成功,也可能数据库/集合可能仍存在于群集中的某些节点中。目前,我们不建议用户删除数据库或集合,然后尝试重用命名空间。
USER IMPACT
如果未在给定节点中成功删除数据库/集合,则相应的文件将继续使用该节点中的磁盘空间。尝试重用命名空间可能会导致未定义的行为。
<强> WORKAROUNDS 强>
要解决此问题,可以按照以下步骤在分片环境中删除数据库/集合:
- 使用
OPEN
删除数据库/集合。- 连接到每个分片的主分区,并验证命名空间是否已被删除。如果还没有,请放弃它。删除数据库(例如
mongos
)会删除磁盘上要删除的数据库的数据文件。连接到
db.dropDatabase()
,切换到mongos
数据库,并从集合config
,chunks
,{{1}中删除对已删除命名空间的任何引用}和locks
:删除数据库时
use config db.collections.remove( { _id: /^DATABASE\./ } ) db.databases.remove( { _id: "DATABASE" } ) db.chunks.remove( { ns: /^DATABASE\./ } ) db.locks.remove( { _id: /^DATABASE\./ } )放弃收藏时:
use config db.collections.remove( { _id: "DATABASE.COLLECTION" } ) db.chunks.remove( { ns: "DATABASE.COLLECTION" } ) db.locks.remove( { _id: "DATABASE.COLLECTION" } )- 醇>
连接到每个
databases
并运行flushRouterConfig
。
答案 1 :(得分:1)
您可以使用MongoDB指南针提供的Embedded Shell。现在处于beta模式。我正在使用指南针版本 1.23.0
要删除多个记录,可以使用field stuff type tensor<float>(x{}) {
indexing: summary |attribute
}
https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/