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

Mongoskinを使用した各製品のフィールド説明の単語からMongoDBドキュメントを検索する

    単語を検索するには、コレクションに存在するすべての製品の説明フィールドにその単語が含まれているため、大文字と小文字を区別しない正規表現の一致が必要です。次のクエリを使用できます(例として):

    db.product.find({"data.description": /test/i});
    

    ここで、 i / test / iで 大文字と小文字を区別しないことを示します。したがって、正規表現は、文字列 "test"を持つテキストの説明フィールドで一致します。 。同等のSQL式は次のとおりです。

    select * from product where description like '%test%'
    

    したがって、 find() findOne() これは1つのドキュメントのみを返します:

    app.get("/description/:id", auth, function(req, res, next) {
        req.collection.find({
            "data.description": /req.params.id/i
        }, function(e, result) {
            if(e) return next(e);
            res.send(result);
        });
    });
    

    もう1つのオプションは、 $ text テキストインデックスでインデックス付けされたフィールドのコンテンツに対してテキスト検索を実行するための検索操作の演算子。したがって、最初に行うことは、説明フィールドにテキストインデックスを作成することです。

    db.collection.createIndex( { "data.description": "text" } )
    

    その後、$text演算子を使用してクエリを実行できます。たとえば、次のクエリはコーヒーという用語を検索します。

    db.collection.find( { $text: { $search: "coffee" } } )
    

    編集

    すべてが同じであれば、ルート実装を更新して、代わりにURLでクエリ文字列を使用できます。

    app.get("/description", auth, function(req, res, next) {
        req.collection.find({
            $text: { $search: req.params.q }
        }, function(e, result) {
            if(e) return next(e);
            res.send(result);
        });
    });
    

    これは、ブラウザで http:// localhost / description?q =productとしてクエリできます。




    1. Mongooseを使用してMongoDBに新しいデータベースを作成することは可能ですか?

    2. Json.NET +MongoDBBsonを一緒にうまくプレイする

    3. MongoDBの集約パイプライン内にキャストデータを入力することは可能ですか?

    4. マングース:findOneAndUpdateは既存のフィールドを更新しません