7

複数のテキスト フィールドに基づいてドキュメントを検索する必要があります。

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

上記を使用するとうまくいきます。ただし、を使用して追加のフィールドを追加しようとすると

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

レコードの取得に失敗します。さらにいくつかのフィールドでこれを行う必要があります。

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

何か案は?

4

1 に答える 1

10

に渡される配列に両方のフィールドを入れますor

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

or各用語は個別のクエリとして実行されるため、個別の単一フィールド インデックスが必要です。

于 2013-09-29T14:01:55.187 に答える