Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

MongoDB có theo dõi số lần mỗi index được sử dụng trong truy vấn không?

Có, bạn có thể theo dõi số lần mỗi index được sử dụng trong truy vấn bằng $indexStats của MongoDB. Tạo index trên trường FirstName:

> db.demo508.createIndex({"FirstName":1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

Thêm tài liệu mẫu:

> db.demo508.insertOne({"FirstName":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e883818987b6e0e9d18f578") }
> db.demo508.insertOne({"FirstName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88381b987b6e0e9d18f579") }
> db.demo508.insertOne({"FirstName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88381f987b6e0e9d18f57a") }

Hiển thị dữ liệu:

> db.demo508.find();

Kết quả:

Sử dụng $indexStats trong aggregation để xem thống kê sử dụng index:

> db.demo508.aggregate([{ $indexStats: { } }]).pretty();

Kết quả hiển thị 2 index (_id_ mặc định và FirstName_1) với số lần truy cập (ops):

{
  "name" : "_id_",
  "key" : { "_id" : 1 },
  "host" : "DESKTOP-QN2RB3H:27017",
  "accesses" : { "ops" : NumberLong(0), "since" : ISODate("2020-04-04T07:32:27.394Z") }
}
{
  "name" : "FirstName_1",
  "key" : { "FirstName" : 1 },
  "host" : "DESKTOP-QN2RB3H:27017",
  "accesses" : { "ops" : NumberLong(0), "since" : ISODate("2020-04-04T07:32:27.527Z") }
}

Giải thích: Trường accesses.ops cho biết số lần index được sử dụng. Giá trị 0 nghĩa là chưa có truy vấn nào dùng index này kể từ khi tạo (since). Chạy các truy vấn find() có điều kiện trên FirstName sẽ làm tăng con số này.