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.