Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

MongoDB 'count()' ช้ามาก เราจะจัดการกับมันได้อย่างไร?


คุณสามารถใช้sureIndex() เพื่อเพิ่มประสิทธิภาพของเมธอด count() ใน MongoDB เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

> db.countPerformanceDemo.insertOne({"StudentName":"John","StudentCountryName":"US"});{ "acknowledged" :true, "insertedId" :ObjectId("5c8ebcf82f684a30fbdfd55f")}> db countPerformanceDemo.insertOne({"StudentName":"Mike","StudentCountryName":"สหราชอาณาจักร"});{ "รับทราบ" :จริง "insertedId" :ObjectId("5c8ebd042f684a30fbdfd560")}> db.countPerformanceDemo.insertOne({" StudentName":"David","StudentCountryName":"AUS"});{ "acknowledged" :true, "insertedId" :ObjectId("5c8ebd112f684a30fbdfd561")}> db.countPerformanceDemo.insertOne({"StudentName":"แครอล" ,"StudentCountryName":"US"});{ "acknowledged" :true, "insertedId" :ObjectId("5c8ebd1a2f684a30fbdfd562")}> db.countPerformanceDemo.insertOne({"StudentName":"Bob","StudentCountryName":" สหราชอาณาจักร"});{ "รับทราบ" :จริง "insertedId" :ObjectId("5c8ebd212f684a30fbdfd563")}> db.countPerformanceDemo.insertOne({"StudentName":"David","StudentCountryName":"UK"});{ "รับทราบ" :จริง "insertedId" :ObjectId("5c8ebd9a2f684a30f bdfd564")}> db.countPerformanceDemo.insertOne({"StudentName":"David","StudentCountryName":"US"});{ "acknowledged" :true, "insertedId" :ObjectId("5c8ebd9e2f684a30fbdfd565")} 

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −

> db.countPerformanceDemo.find().pretty();

ต่อไปนี้เป็นผลลัพธ์ -

{ "_id" :ObjectId("5c8ebcf82f684a30fbdfd55f"), "StudentName" :"John", "StudentCountryName" :"US"}{ "_id" :ObjectId("5c8ebd042f684a30fbdfdentName"), "StudentName":"StudentName":"StudentName" , "StudentCountryName" :"UK"}{ "_id" :ObjectId("5c8ebd112f684a30fbdfd561"), "StudentName" :"David", "StudentCountryName" :"AUS"}{ "_id" :ObjectId("5c8ebdf1afd68, StudentName" :"Carol", "StudentCountryName" :"US"}{ "_id" :ObjectId("5c8ebd212f684a30fbdfd563"), "StudentName" :"Bob", "StudentCountryName" :"UK"}{ "_id" :ObjectId( "5c8ebd9a2f684a30fbdfd564"), "StudentName" :"David", "StudentCountryName" :"UK"}{ "_id" :ObjectId("5c8ebd9e2f684a30fbdfd565"), "StudentCountryName" :"StudentCount" :"StudentCount" , /pre> 

นี่คือแบบสอบถามเพื่อให้ได้รูปแบบที่มีประสิทธิภาพสูงของ count() -

> db.countPerformanceDemo.ensureIndex({"StudentName":1});{ "createdCollectionAutomatically" :false, "numIndexesBefore" :1, "numIndexesAfter" :2, "ok" :1}

ตอนนี้ใช้เมธอด count() นับระเบียนด้วย StudentName “David”:

> db.countPerformanceDemo.find({"StudentName":"David"}).count();

ต่อไปนี้เป็นผลลัพธ์ -

3