我部署了 IBM Cloud Databases for MongoDB。我想压缩数据库中的集合以节省磁盘空间并提高性能。我怎样才能实现这一目标?
您可以使用 Mongo shell CLI 来完成此操作。
要使用 Mongo shell 进行连接,您需要:
admin
用户的密码请参阅文档
中有关如何获取这些内容的说明连接字符串包含组成高可用集群的 3 个节点的列表。您将需要单独定位每个节点并压缩每个节点上的集合副本。
要连接到节点,请使用以下 Mongo shell 命令:
mongosh -u admin -p <your_password> --ssl --sslCAFile path/to/file --authenticationDatabase admin --host <hostname:port>
# Current Mongosh Log ID: xxxx
#Connecting to: mongodb://<credentials>@hostname:port/?#directConnection=true&authSource=admin&tls=true&tlsCAFile=file&appName=mongosh+2.1.1
#For mongosh info see: https://docs.mongodb.com/mongodb-shell/
#Enterprise replset [direct: secondary] test>
现在定位您的集合所在的数据库:
use mydb
最后,对要压缩的每个集合发出
compact
命令:
db.runCommand({compact:"mycollection"})
请注意,如果您尝试压缩当前主节点中的集合,此命令将失败。如果您想继续,可以在命令中添加
force
标志:
db.runCommand({compact:"catalog", force:true})
MongoDB 文档表明这在压缩时不会阻止 CRUD 操作。