Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để chạy hiệu quả các truy vấn phức tạp trên các trường không lập chỉ mục MongoDB?

Tạo chỉ mục để chạy các truy vấn phức tạp một cách hiệu quả. Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo400.insertOne({SubjectName:"Java Spring"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e610720fac4d418a0178572")
}
> db.demo400.insertOne({SubjectName:"Spring Hibernate"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e61072dfac4d418a0178573")
}
> db.demo400.insertOne({SubjectName:"Java Hibernate"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e610736fac4d418a0178574")
}
> db.demo400.createIndex({SubjectName:"text"});
{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.demo400.find();

Điều này sẽ tạo ra kết quả sau -

{ "_id" : ObjectId("5e610720fac4d418a0178572"), "SubjectName" : "Java Spring" }
{ "_id" : ObjectId("5e61072dfac4d418a0178573"), "SubjectName" : "Spring Hibernate" }
{ "_id" : ObjectId("5e610736fac4d418a0178574"), "SubjectName" : "Java Hibernate" }

Sau đây là truy vấn để thực hiện hiệu quả các truy vấn phức tạp trên các trường chưa lập chỉ mục -

> db.demo400.find({ $text: { $search: "Spring" } } )

Điều này sẽ tạo ra kết quả sau -

{ "_id" : ObjectId("5e61072dfac4d418a0178573"), "SubjectName" : "Spring Hibernate" }
{ "_id" : ObjectId("5e610720fac4d418a0178572"), "SubjectName" : "Java Spring" }