まず、データを次のように再構築する必要があります。
{
name: "Burger",
ingredients: [
"bread",
"cheese",
"tomato",
"beef"
]
}
追加の「アイテム」は、追加情報を追加したり、データへのアクセスを支援したりすることはありません。
次に、テキストインデックス を作成する必要があります 。ドキュメントには次のように記載されています
だから私たちは単に
db.collection.ensureIndex({"ingredients":"text"})
これで、 $text
を実行できます。 検索
:
db.collection.find(
{ $text: { $search: "bread beef" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
これにより、最も関連性の高いドキュメントが得られるはずです。
ただし、直接一致するテキスト以外の検索も実行できます。
db.collection.find({ingredients:"beef"})
または複数の材料の場合
db.collections.find({ ingredients: { $all: ["beef","bread"] } })
したがって、ユーザー入力による検索にはテキスト検索を使用でき、選択した材料による検索には非テキスト検索を使用できます。