2013-09-29 2 views
6

複数のテキストフィールドに基づいてドキュメントを探す必要があります。Mongooseまたはクエリ

var term = new RegExp(req.query.search, 'i'); 
.find({ company_name: { $regex: term }}); 

上記の使用方法は素晴らしいです。しかし、フィールドを追加しようとすると、

.find(...).or([{ bio: { $regex: term }}]); 

レコードを取得できません。私はいくつかの分野でこれを行う必要があります。

スキーマには異なるテキストフィールドがインデックスされていますが、単一のマルチフィールドインデックスとしてまとめられていません。これはうまくいくのでしょうか?それがあれば、これの明確な例はありますか?私が見つけたドキュメンテーションはかなり疎です。

アイデア?

答えて

9

orに渡された配列に両方のフィールドを置きます。各or用語が別のクエリとして実行されるよう

.find().or([{ company_name: { $regex: term }}, { bio: { $regex: term }}]); 

別個の単一フィールドインデックスは、あなたが欲しいものです。

+0

は完璧な意味で問題を解決します。ありがとう – user2787799

関連する問題