MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Permintaan Mongodb tidak menggunakan awalan pada indeks gabungan dengan bidang teks

Secara umum MongoDB dapat menggunakan awalan indeks untuk mendukung kueri, namun indeks gabungan termasuk bidang geospasial atau teks adalah kasus khusus indeks gabungan jarang . Jika dokumen tidak menyertakan nilai untuk bidang indeks teks mana pun dalam indeks gabungan, dokumen tersebut tidak akan disertakan dalam indeks.

Untuk memastikan hasil yang benar untuk pencarian awalan, rencana kueri alternatif akan dipilih di atas indeks gabungan jarang:

Menyiapkan beberapa data uji di MongoDB 3.4.5 untuk menunjukkan potensi masalah:

db.myCollection.createIndex({ user_id:1, name: 'text' }, { name: 'myIndex'})

// `name` is a string; this document will be included in a text index
db.myCollection.insert({ user_id:123, name:'Banana' })

// `name` is a number; this document will NOT be included in a text index
db.myCollection.insert({ user_id:123, name: 456 })

// `name` is missing; this document will NOT be included in a text index
db.myCollection.insert({ user_id:123 })

Kemudian, memaksa indeks teks majemuk yang akan digunakan:

db.myCollection.find({user_id:123}).hint('myIndex')

Hasilnya hanya menyertakan satu dokumen dengan bidang teks terindeks name , daripada tiga dokumen yang diharapkan:

{
  "_id": ObjectId("595ab19e799060aee88cb035"),
  "user_id": 123,
  "name": "Banana"
}

Pengecualian ini harus lebih jelas disorot dalam dokumentasi MongoDB; watch/upvote DOCS-10322 di pelacak masalah MongoDB untuk pembaruan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bisakah pengemudi meteor mongo menangani operator $each dan $position?

  2. Deserialisasi objek sebagai antarmuka dengan MongoDB C# Driver

  3. Ekspresi Filter Kompas MongoDB ke ekspresi Go bson.M

  4. Driver MongoDB dan Java:abaikan kasus dalam kueri

  5. File yang dibuat MongoDB