sql >> データベース >  >> NoSQL >> MongoDB

MongoDBで同様のドキュメントを見つけるにはどうすればよいですか?

    まず、データを次のように再構築する必要があります。

    {
      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"] } })
    

    したがって、ユーザー入力による検索にはテキスト検索を使用でき、選択した材料による検索には非テキスト検索を使用できます。



    1. Node.js Mongoose .update with ArrayFilters

    2. 指定された値の内部サブフィールドを持つドキュメントをクエリします

    3. メモリが不足した場合、Redisは何をしますか?

    4. Mongodbのフィールドでサブストリングを見つける方法