Trước hết, dữ liệu của bạn nên được sửa lại như sau:
{
name: "Burger",
ingredients: [
"bread",
"cheese",
"tomato",
"beef"
]
}
"Mục" bổ sung không thêm bất kỳ thông tin bổ sung nào cũng như không giúp truy cập dữ liệu theo bất kỳ cách nào.
Tiếp theo, bạn cần tạo chỉ mục văn bản . Tài liệu nói rằng
Vì vậy, chúng tôi chỉ đơn giản thực hiện một
db.collection.ensureIndex({"ingredients":"text"})
Bây giờ chúng ta có thể thực hiện $text
tìm kiếm
:
db.collection.find(
{ $text: { $search: "bread beef" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
sẽ cung cấp cho bạn các tài liệu phù hợp nhất.
Tuy nhiên, những gì bạn cũng có thể làm là tìm kiếm không phải văn bản để tìm các kết quả phù hợp trực tiếp:
db.collection.find({ingredients:"beef"})
hoặc cho nhiều thành phần
db.collections.find({ ingredients: { $all: ["beef","bread"] } })
Vì vậy, để tìm kiếm theo đầu vào của người dùng, bạn có thể sử dụng tìm kiếm văn bản và tìm kiếm theo các thành phần đã chọn, bạn có thể sử dụng tìm kiếm không phải văn bản.