在 Debian 上配置 MongoDB 索引,主要分为 连接 MongoDB → 选择数据库和集合 → 创建/查看/删除索引。下面按实战步骤说明。
常见检查:
sudo systemctl status mongod
mongo --version
新版本 MongoDB(5+)客户端可能是
mongosh而不是mongo:
mongosh
mongosh
或指定 IP / 端口:
mongosh "mongodb://127.0.0.1:27017"
use testdb
查看集合:
show collections
db.users.createIndex({ username: 1 })
1:升序-1:降序查看索引:
db.users.getIndexes()
db.orders.createIndex({ user_id: 1, created_at: -1 })
✅ 适合:
db.orders.find({ user_id: 1001 }).sort({ created_at: -1 })
db.users.createIndex({ email: 1 }, { unique: true })
db.articles.createIndex({ title: "text", content: "text" })
查询:
db.articles.find({ $text: { $search: "mongodb" } })
db.logs.createIndex(
{ createdAt: 1 },
{ expireAfterSeconds: 3600 }
)
⏱ 一小时前的数据自动删除
db.users.createIndex({ age: 1 }, { background: true })
MongoDB 4.2+ 默认异步,不再需要
background
查看:
db.collection.getIndexes()
删除某个索引:
db.users.dropIndex("username_1")
删除全部(⚠危险):
db.users.dropIndexes()
✅ 在 配置文件中开启慢查询日志
sudo nano /etc/mongod.conf
operationProfiling:
slowOpThresholdMs: 100
mode: slowOp
重启:
sudo systemctl restart mongod
✅ 用 explain() 验证索引是否生效:
db.users.find({ username: "tom" }).explain("executionStats")
❌ 索引字段类型不一致
❌ 复合索引顺序不对
❌ 在超大集合上同步建索引(锁表)
如果你愿意,可以告诉我:
我可以帮你 设计最优索引方案。