Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK:
MongoDB vCore
Operator $text
melakukan pencarian teks pada konten bidang string terindeks. Ini memungkinkan kemampuan pencarian teks lengkap dengan mencari kata atau frasa tertentu di seluruh bidang yang diindeks teks. Operator $text
memerlukan setidaknya satu indeks teks pada koleksi dan menyediakan fitur seperti stemming, menghentikan penghapusan kata, dan penilaian relevansi.
Sintaksis
Sintaks untuk $objectToArray
operator adalah sebagai berikut:
{
$text: {
$search: <string>,
$language: <string>,
$caseSensitive: <boolean>,
$diacriticSensitive: <boolean>
}
}
Parameter-parameternya
Deskripsi | |
---|---|
$search |
Dibutuhkan. String pencarian yang berisi istilah yang akan dicari. Beberapa istilah diperlakukan sebagai operasi OR kecuali diapit dalam tanda kutip untuk pencocokan frasa. |
$language |
Fakultatif. Bahasa untuk pencarian teks, yang menentukan aturan stemming dan kata berhenti, meskipun sistem menggunakan bahasa default indeks jika Anda tidak menentukannya |
$caseSensitive |
Fakultatif. Bendera Boolean untuk mengaktifkan pencarian peka huruf besar/kecil. Defaultnya adalah false (tidak peka huruf besar/kecil). |
$diacriticSensitive |
Fakultatif. Bendera Boolean untuk mengaktifkan pencarian sensitif diakritik. Defaultnya adalah false (diakritik-tidak sensitif). |
Prasyarat
Sebelum menggunakan $text
operator, Anda harus membuat indeks teks pada bidang yang ingin Anda cari.
Contoh
Contoh 1: Pencarian teks sederhana
Contoh mencari penyimpanan yang berisi kata "Mikrofon" di bidang teks terindeks.
// First create a text index
db.stores.createIndex({ "name": "text", "sales.salesByCategory.categoryName": "text" })
// Then perform the search
db.stores.find(
{ $text: { $search: "Microphone" }},
{ "_id": 1, "name": 1, "sales.salesByCategory.categoryName": 1 }).limit(2)
Kueri ini mencari dokumen yang berisi kata "Mikrofon" di salah satu bidang yang diindeks teks.
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"sales": {
"salesByCategory": [
{ "categoryName": "Lavalier Microphones" },
{ "categoryName": "Wireless Microphones" }
]
}
},
{
"_id": "7cecdb2d-33c2-434c-ad55-bf529f68044b",
"name": "Contoso, Ltd. | Microphone Haven - O'Connellside",
"sales": {
"salesByCategory": [
{ "categoryName": "Microphone Accessories" },
{ "categoryName": "Wireless Microphones" }
]
}
}
Contoh 2: Beberapa pencarian istilah
Contoh mencari toko yang terkait dengan "Home Decor" (beberapa istilah diperlakukan sebagai OR
secara default).
// First create a text index
db.stores.createIndex({ "name": "text", "sales.salesByCategory.categoryName": "text" })
// Then perform the search
db.stores.find(
{ $text: { $search: "Home Decor" }},
{ "_id": 1, "name": 1, "sales.salesByCategory.categoryName": 1 }).limit(5)
Kueri menemukan dokumen yang berisi "Beranda" ATAU "Dekor" di bidang teks terindeks.
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"sales": {
"salesByCategory": [
{ "categoryName": "Desk Lamps" }
]
}
},
{
"_id": "923d2228-6a28-4856-ac9d-77c39eaf1800",
"name": "Lakeshore Retail | Home Decor Hub - Franciscoton",
"sales": {
"salesByCategory": [
{ "categoryName": "Lamps" },
{ "categoryName": "Rugs" }
]
}
},
{
"_id": "1a2c387b-bb43-4b14-a6cd-cc05a5dbfbd5",
"name": "Contoso, Ltd. | Smart Home Device Vault - Port Katarina",
"sales": {
"salesByCategory": [
{ "categoryName": "Smart Locks" },
{ "categoryName": "Smart Home Hubs" }
]
}
},
{
"_id": "15e9ca57-ebc1-4191-81c2-5dc2f4ebd973",
"name": "Trey Research | Gardening Supply Stop - Port Saul",
"sales": {
"salesByCategory": [
{ "categoryName": "Garden Decor" },
{ "categoryName": "Pruning Shears" }
]
}
},
{
"_id": "dda2a7d2-6984-40cc-bbea-4cbfbc06d8a3",
"name": "Contoso, Ltd. | Home Improvement Closet - Jaskolskiview",
"sales": {
"salesByCategory": [
{ "categoryName": "Lumber" },
{ "categoryName": "Windows" }
]
}
}
Contoh 3: Pencarian frasa
Contoh mencari frasa "Home Theater" yang tepat menggunakan tanda kutip.
db.stores.find(
{ $text: { $search: "\"Home Theater\"" }},
{ "_id": 1, "name": 1, "sales.salesByCategory.categoryName": 1 }).limit(2)
Istilah pencarian yang dikutip memastikan pencocokan frasa yang tepat daripada pencocokan kata individual.
{
"_id": "0bc4f653-e64e-4342-ae7f-9611dfd37800",
"name": "Tailwind Traders | Speaker Bazaar - North Mireyamouth",
"sales": {
"salesByCategory": [
{ "categoryName": "Home Theater Speakers" }
]
}
},
{
"_id": "28bb05ed-d516-4186-9144-b9eeee30917a",
"name": "Adatum Corporation | Home Entertainment Market - East Bennettville",
"sales": {
"salesByCategory": [
{ "categoryName": "Media Players" },
{ "categoryName": "Home Theater Projectors" },
{ "categoryName": "Projector Accessories" },
{ "categoryName": "Sound Bars" },
{ "categoryName": "Blu-ray Players" }
]
}
}
Contoh 4: Mengecualikan istilah dengan negasi
Contoh mencari toko dengan "Audio" tetapi mengecualikan toko dengan "Nirkabel".
db.stores.find(
{ $text: { $search: "Audio -Wireless" }},
{ "_id": 1, "name": 1, "sales.salesByCategory.categoryName": 1 }).limit(2)
Tanda minus (-) sebelum "Nirkabel" mengecualikan dokumen yang berisi istilah tersebut dari hasil.
{
"_id": "32afe6ec-dd3c-46b3-a681-ed041b032c39",
"name": "Relecloud | Audio Equipment Gallery - Margretshire",
"sales": {
"salesByCategory": [
{ "categoryName": "Audio Receivers" },
{ "categoryName": "Portable Bluetooth Speakers" }
]
}
},
{
"_id": "a3d3e59f-54bd-44be-943c-50dca5c4d667",
"name": "Contoso, Ltd. | Audio Equipment Shop - West Darrion",
"sales": {
"salesByCategory": [
{ "categoryName": "Soundbars" }
]
}
}
Contoh 5: Pencarian peka huruf besar/kecil
Nota
Dukungan untuk peka huruf besar/kecil berada dalam alur dan harus segera dirilis.
Contoh ini memungkinkan melakukan pencarian peka huruf besar/kecil untuk "BAZAAR".
db.stores.find(
{ $text: { $search: "BAZAAR", $caseSensitive: true } },
{ "_id": 1, "name": 1, "sales.salesByCategory.categoryName": 1 }
).limit(2)
Kueri akan cocok dengan dokumen di mana "BAZAAR" muncul dalam kasus tersebut.
Contoh 6: Dikombinasikan dengan operator kueri lain
Contoh ini memungkinkan pencarian toko dengan "Hub" dalam teks dan total penjualan lebih besar dari 50000.
db.stores.find({
$text: { $search: "Hub" }, "sales.totalSales": { $gt: 20000 }},
{ "_id": 1, "name": 1, "sales.salesByCategory.categoryName": 1,"sales.totalSales":1 }
).limit(2)
Kueri menggabungkan pencarian teks dengan kueri berbasis bidang tradisional untuk pemfilteran yang lebih tepat.
{
"_id": "future-electronics-001",
"name": "Future Electronics Hub",
"sales": { "totalSales": 25000 }
},
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"sales": {
"salesByCategory": [
{ "categoryName": "Sound Bars" },
{ "categoryName": "Game Controllers" },
{ "categoryName": "Remote Controls" },
{ "categoryName": "VR Games" }
],
"totalSales": 160000
}
}
Contoh 7: Mendapatkan skor pencarian teks
Ambil hasil pencarian teks dengan skor relevansi untuk peringkat.
db.stores.find(
{ $text: { $search: "Hub" } },
{ score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } }).limit(5)
Kueri ini mengembalikan dokumen yang diurutkan menurut skor relevansi pencarian teks, dengan hasil yang paling relevan terlebih dahulu.
{ "_id": '511c9932-d647-48dd-9bd8-baf47b593f88', "score": 2 },
{ "_id": 'a0a2f05c-6085-4c99-9781-689af759662f', "score": 2 },
{ "_id": 'fb5aa470-557c-43cb-8ca0-5915d6cae34b', "score": 2 },
{ "_id": '1a2c387b-bb43-4b14-a6cd-cc05a5dbfbd5', "score": 1 },
{ "_id": '40d6f4d7-50cd-4929-9a07-0a7a133c2e74', "score": 1 }
Contoh 8: Mencari di beberapa kategori
Buat indeks teks komprehensif dan cari di semua bidang teks.
// Create comprehensive text index
db.stores.createIndex({
"name": "text",
"sales.salesByCategory.categoryName": "text",
"promotionEvents.eventName": "text",
"promotionEvents.discounts.categoryName": "text"
})
// Search across all indexed fields
db.stores.find(
{ $text: { $search: "\"Home Theater\"" }},
{ "name": 1, "sales.salesByCategory.categoryName": 1, "promotionEvents.eventName": 1, "promotionEvents.discounts.categoryName": 1}).limit(2)
Contoh menunjukkan pencarian di beberapa bidang secara bersamaan untuk cakupan maksimum.
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"sales": {
"salesByCategory": [
{ "categoryName": "Sound Bars" },
{ "categoryName": "Game Controllers" },
{ "categoryName": "Remote Controls" },
{ "categoryName": "VR Games" }
]
},
"promotionEvents": [
{
"eventName": "Massive Markdown Mania",
"discounts": [
{ "categoryName": "DVD Players" },
{ "categoryName": "Projector Lamps" },
{ "categoryName": "Media Players" },
{ "categoryName": "Blu-ray Players" },
{ "categoryName": "Home Theater Systems" },
{ "categoryName": "Televisions" }
]
},
{
"eventName": "Fantastic Deal Days",
"discounts": [
{ "categoryName": "TV Mounts" },
{ "categoryName": "Game Accessories" },
{ "categoryName": "Portable Projectors" },
{ "categoryName": "Projector Screens" },
{ "categoryName": "Blu-ray Players" },
{ "categoryName": "DVD Players" }
]
},
{
"eventName": "Discount Delight Days",
"discounts": [
{ "categoryName": "Game Controllers" },
{ "categoryName": "Home Theater Projectors" },
{ "categoryName": "Sound Bars" },
{ "categoryName": "Media Players" },
{ "categoryName": "Televisions" },
{ "categoryName": "Projector Lamps" }
]
},
{
"eventName": "Super Sale Spectacular",
"discounts": [
{ "categoryName": "Laser Projectors" },
{ "categoryName": "Projector Screens" },
{ "categoryName": "PC Games" },
{ "categoryName": "PlayStation Games" },
{ "categoryName": "TV Mounts" },
{ "categoryName": "Mobile Games" }
]
},
{
"eventName": "Grand Deal Days",
"discounts": [
{ "categoryName": "Remote Controls" },
{ "categoryName": "Televisions" },
{ "categoryName": "Business Projectors" },
{ "categoryName": "Laser Projectors" },
{ "categoryName": "Projectors" },
{ "categoryName": "Projector Screens" }
]
},
{
"eventName": "Major Bargain Bash",
"discounts": [
{ "categoryName": "Sound Bars" },
{ "categoryName": "VR Games" },
{ "categoryName": "Xbox Games" },
{ "categoryName": "Projector Accessories" },
{ "categoryName": "Mobile Games" },
{ "categoryName": "Projector Cases" }
]
}
]
},
{
"_id": "0bc4f653-e64e-4342-ae7f-9611dfd37800",
"name": "Tailwind Traders | Speaker Bazaar - North Mireyamouth",
"sales": {
"salesByCategory": [
{ "categoryName": "Home Theater Speakers" }
]
},
"promotionEvents": [
{
"eventName": "Epic Bargain Bash",
"discounts": [
{ "categoryName": "Bluetooth Speakers" },
{ "categoryName": "Outdoor Speakers" }
]
},
{
"eventName": "Fantastic Deal Days",
"discounts": [
{ "categoryName": "Portable Speakers" },
{ "categoryName": "Home Theater Speakers" }
]
}
]
}
Konten terkait
- Meninjau opsi untuk Migrasi dari MongoDB ke Azure Cosmos DB untuk MongoDB (vCore)
- Baca selengkapnya tentang Kompatibilitas fitur dengan MongoDB