Siva Dasari Asked: 2016-10-31 11:59:19 +0800 CST2016-10-31 11:59:19 +0800 CST 2016-10-31 11:59:19 +0800 CST MongoDB remove() 函数删除文档但保留索引 772 我在我的阅读中遇到过 remove() 函数将删除文档而不对现有索引进行任何更改。 例如:“db.users.remove() - 这将删除用户集合中的所有文档。这实际上并没有删除集合,并且在其上创建的任何索引仍然存在。 ” 我想了解为什么在该特定集合中删除/删除实际引用的数据时保留索引?有什么具体的用例吗? 谢谢 mongodb delete 2 个回答 Voted Best Answer Adam Harrison 2016-11-03T16:23:47+08:002016-11-03T16:23:47+08:00 db.collection.remove()命令用于从集合中删除数据。因此,文档将从集合中删除,并且集合上的索引将更新为不再引用已删除的文档。 删除可以以仅删除数据子集的方式使用。从文档: db.products.remove( { qty: { $gt: 20 } } ) 例如,您可能希望删除数据子集但保留现有索引以根据现有访问模式继续访问剩余数据。 此命令与db.collection.drop()命令不同,后者删除整个集合及其索引。 Saheed 2020-04-13T01:44:48+08:002020-04-13T01:44:48+08:00 在 MongoDB v3.6+(我的是 v3.6.8)中,db.products.remove()操作后,您可以通过发出以下命令重新创建索引: db.products.reIndex() 否则,如果您使用CLI等其他工具从集合中删除了多个文档,则MongoDB Compass等工具可能会报告打开的集合为空。mongo
db.collection.remove()命令用于从集合中删除数据。因此,文档将从集合中删除,并且集合上的索引将更新为不再引用已删除的文档。
删除可以以仅删除数据子集的方式使用。从文档:
例如,您可能希望删除数据子集但保留现有索引以根据现有访问模式继续访问剩余数据。
此命令与db.collection.drop()命令不同,后者删除整个集合及其索引。
在 MongoDB v3.6+(我的是 v3.6.8)中,
db.products.remove()
操作后,您可以通过发出以下命令重新创建索引:否则,如果您使用CLI等其他工具从集合中删除了多个文档,则MongoDB Compass等工具可能会报告打开的集合为空。
mongo