আগের Indexes lesson single-field, compound, আর unique index কভার করেছে — সবগুলোই একটা exact বা range match দ্রুত করে। এই তিনটা type সত্যিকারভাবে ভিন্ন সমস্যা সমাধান করে।
একটা text field ঠিক match করার বদলে এর ভেতরে শব্দ search করতে দেয় — একটা site-এর search bar-এর সাধারণত দরকার হওয়া একই ধরনের search।
db.articles.createIndex({ title: 'text', body: 'text' })
db.articles.find({ $text: { $search: 'mongodb indexing' } })
// title বা body-র যেকোনো জায়গায় "mongodb" বা "indexing" ধারণ করা article match করে,
// relevance অনুযায়ী rank করাএকটা text index-এর সীমা
একটা collection-এর শুধু একটা text index থাকতে পারে, যদিও এটা একসাথে একাধিক field কভার করতে পারে (উপরের মতো)। এর বাইরের search দরকারের জন্য — typo tolerance, weighted relevance tuning — এই lesson যে PDF-এর উপর ভিত্তি করে সেখানে উল্লেখ করা MongoDB Atlas Search পূর্ণ tool; এটা built-in বেসিক কভার করে।
Location সম্পর্কে query দ্রুত করে — একটা point-এর একটা দূরত্বের ভেতরে, বা একটা boundary-র ভেতরে সবকিছু খুঁজে বের করা।
db.stores.createIndex({ location: '2dsphere' })
db.stores.insertOne({
name: 'Downtown Store',
location: { type: 'Point', coordinates: [-73.99, 40.73] } // [longitude, latitude]
})
// একটা point-এর 5km-এর মধ্যে store খুঁজুন
db.stores.find({
location: {
$near: {
$geometry: { type: 'Point', coordinates: [-73.99, 40.73] },
$maxDistance: 5000 // meter
}
}
})একটা common ordering ভুল
GeoJSON coordinate [longitude, latitude] — অনেক mapping API ব্যবহার করা [latitude, longitude] ক্রমের উল্টো। এগুলো swap করলে চুপচাপ একটা কাজ করা query তৈরি হয় যা পৃথিবীর ভুল জায়গা নির্দেশ করে।
একটা TTL (Time To Live) index একটা date field একটা নির্ধারিত বয়স পার হলে স্বয়ংক্রিয়ভাবে একটা document delete করে — session data, temporary token, বা চিরকাল জমা হওয়া উচিত না এমন log-এর জন্য useful।
db.sessions.createIndex(
{ createdAt: 1 },
{ expireAfterSeconds: 3600 } // createdAt-এর 1 ঘণ্টা পরে delete হয়
)
db.sessions.insertOne({
userId: 'abc123',
createdAt: new Date(), // এই document 1 ঘণ্টায় নিজে থেকে delete হয়
})| Index ধরন | যার জন্য ব্যবহার |
|---|---|
| Text | একটা text field-এর ভেতরে শব্দ search করা |
| Geospatial (2dsphere) | Location দিয়ে document খুঁজে বের করা — কাছাকাছি, একটা area-র ভেতরে |
| TTL | একটা নির্ধারিত সময়ের পরে স্বয়ংক্রিয়ভাবে document delete করা |