2017-05-02 17 views
0

私は以下のようにmongoスキーマを持っています。各単語の先頭文字によるMongoDB検索文字列

var employeeSchema = new mongoose.Schema({ 
id: { type: String,ref:'Users' }, 
FirstName: { type: String }, 
LastName: { type: String }, 
Skills: [ 
    { 
     Category: { type: String }, 
     Level: { type: String } 
    } 
]}, { strict: true }); 

データを入力すると、次のようになります。

{ 
id: '123456', 
FirstName: "Name", 
LastName: "Last Name", 
Skills: [ 
    { 
     Category: "Traffic Management Supervisor ", 
     Level: "Intermediate" 
    } 
] 

}

私の問題、私は彼のスキルカテゴリ別に雇用をフィルタリングします。そして、私は最初に各単語の文字の代わりに、入力文字列全体

例で従業員をフィルタリングしたい:私はTMS代わりトラフィック管理のスーパーバイザー

答えて

2

を使用して自分のスキルカテゴリ別に全従業員をフィルタリングする必要があります集計メソッドで正規表現マッチを使用できます。これらの検索を動的に作成することをお勧めします。どんな入力であっても$や正規表現に入れることができます。

// Only filter by category field 
Employee.aggregate([{ 
    $match: { 
     "Skills.Category": { 
      $regex: '[tms]+', 
      $options: 'i' 
     } 
    } 

}]) 

// Any category match 
Employee.aggregate([{ 
    $match: { 

     $or: [{ 
      "Skills.Category": { 
       $regex: '[tms]+', 
       $options: 'i' 
      } 
     }, { 
      "Skills.Level": { 
       $regex: '[tms]+', 
       $options: 'i' 
      } 
     }] 

    } 

}]) 
+0

こんにちは@Semih Gk。これはうまく動作します。あなたのお時間をありがとう。 –

+0

喜んで助けます;) –

関連する問題