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

Bagaimana saya bisa menemukan dokumen serupa di MongoDB?

Pertama-tama, data Anda harus dimodel ulang seperti di bawah ini:

{
  name: "Burger",
  ingredients: [
    "bread",
    "cheese",
    "tomato",
    "beef"
  ]
}

"Item" tambahan tidak menambahkan informasi tambahan atau membantu mengakses data dengan cara apa pun.

Selanjutnya, Anda perlu membuat indeks teks . Dokumen menyatakan bahwa

Jadi kita cukup melakukan

db.collection.ensureIndex({"ingredients":"text"})

Sekarang kita dapat melakukan $text cari :

db.collection.find(
  { $text: { $search: "bread beef" } },
  { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

yang akan memberi Anda dokumen yang paling relevan.

Namun, Anda juga dapat melakukan pencarian non-teks untuk pencocokan langsung:

db.collection.find({ingredients:"beef"})

atau untuk beberapa bahan

db.collections.find({ ingredients: { $all: ["beef","bread"] } })

Jadi untuk pencarian berdasarkan input pengguna, Anda dapat menggunakan pencarian teks dan untuk pencarian berdasarkan bahan yang dipilih, Anda dapat menggunakan pencarian non-teks.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tetap buka koneksi database MongoDB

  2. Pencocokan pipa MongoDB $lookup dengan _id tidak berfungsi

  3. BadValue Tidak valid atau tidak ada set lokal pengguna. Harap pastikan variabel lingkungan LANG dan/atau LC_* disetel dengan benar

  4. Meteor menggunakan Azure MongoDB

  5. kelas dan antarmuka untuk menulis Model dan skema Mongoose yang diketik di TypeScript menggunakan pasti diketik