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

MongoDB Tidak dapat mengkanonikalisasi kueri:BadValue Terlalu banyak ekspresi teks

Kesalahannya cukup tepat. Apa yang Anda coba lakukan adalah membuat "beberapa kueri teks" di dalam $or kondisi. MongoDB tidak dapat melakukan itu dan itu sebenarnya dinyatakan di baris pertama Pembatasan di halaman manual untuk $text .

Selain itu, Anda tidak seharusnya untuk melakukannya, tetapi tentukan satu indeks teks pada koleksi Anda untuk mencari di beberapa bidang jika diperlukan:

db.collection.ensureIndex({ "comments": "text", "title": "text" })

Dan kemudian Anda mungkin ingin menetapkan bobot seperti yang ditunjukkan di sini .

Tapi sepertinya yang Anda minta hanyalah mencari "beberapa istilah". Jadi Anda tidak menggunakan $or untuk ini, tetapi kirimkan saja daftar istilah yang dipisahkan oleh spasi:

db.collection.find({ "$text": { "$search": "something else" } })

Kata apa pun dalam daftar yang dibatasi spasi kemudian dicari dalam konteks bidang apa pun yang ada di dalam indeks teks, dan dokumen apa pun yang berisi "salah satu" dari kata-kata itu akan dikembalikan. Dengan hasil yang diurutkan berdasarkan "bobot" dari lebih banyak kecocokan kata-kata dalam daftar itu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Mengonversi Tampilan MongoDB menjadi Koleksi

  2. Status MongoDB gagal setelah mengedit mongo.conf (keluar kode, status =2)

  3. Kondisi pertandingan dan tanggal terbaru dari array

  4. Simpan string Json sebagai array MongoDB di C #

  5. Memahami Opsi Pencadangan MongoDB