6

ここにBOOKコレクションがあります:

 Book Id:001
 Book Name:C# step by step
 Book Description:Programming book on C#

 Book Id:002
 Book Name:Head First Java
 Book Description:Programming Book on Java

 Book Id:003
 Book Name:Steve Jobs
 Book Description:biography of Jobs

私の質問は、本の説明に「プログラミング」という単語が含まれるすべての本を検索する方法です。

私は NoSQL の初心者です。現在、キーワード検索ではなく正確な検索を実行するためにのみ find() を使用できます。

4

3 に答える 3

4

ドキュメントには、 Mongo での全文検索に関する章があり、各文字列を個々の単語の配列に分割して、インデックスを作成して検索を高速化できるようにすることを推奨しています。

{   Id:001,
    Name:"C# step by step",
    Description:"Programming book on C#",
    Description_tags: [
        "Programming",
        "book",
        "on",
        "C#"]
}

db.books.ensureIndex({Description_tags:1});

db.books.find(Description_tags:"Programming");

速度が問題ではなく、データ構造の変更を避けたい場合は、正規表現を使用することもできます。ただし、これはスケーリングが悪いことに注意してください。ルックアップ時間は、コレクション内のエントリ数に比例します。

db.collection.find( {description: { $regex: "Programming"} } );
于 2012-11-28T13:55:44.677 に答える
2

findこれを行うには、のクエリセレクタで正規表現を使用できます。

db.books.find({description: /Programming/})
于 2012-11-28T13:48:57.217 に答える