複数のORを持つNodeを使ってMongoクエリを動的に構築したいと考えています。この問合せのポイントは、複数の検索語を使用してデータベース内でAND検索を行うことです。MongoDB Queryを複数のORで動的に構築する方法は?
たとえば、「dog」と「cereal」という単語を含むレコードを検索したいとします。クエリでは、レコードのどこかに "dog"と "cereal"を持つレコードのみが返されます(つまり、検索クエリが異なる列に表示される可能性があります)。私は、クエリは、このように見える終わる必要があることを知っている
:
query = {
$and: [
{$or: [
{col1: {$regex: "first", $options: "i"}},
{col2: {$regex: "first", $options: "i"}}
]},
{$or: [
{col1: {$regex: "second", $options: "i"}},
{col2: {$regex: "second", $options: "i"}}
]}
]
}
マイノードコードは、しかし、これを生成しません。 これは私がこれを考え出すに得ている最も近い:
var regexQueryWrapper = {};
regexQueryWrapper["$and"] = [];
var wrapper = {};
wrapper["$or"] = [];
var query = {};
searchTerms.forEach(function(term) {
searchFields.forEach(function(field) {
query[field] = {$regex: term, $options: 'i'};
wrapper["$or"].push(query);
});
regexQueryWrapper["$and"].push(wrapper);
});
これを行うための最善の方法は何ですか?私が紛失している別のアプローチがありますか?
あなたはMongoDBの者を使用して見てきました[テキスト検索](https://docs.mongodb.com/manual/text-search/)これは?あなたのユースケースは良いフィット感があります。 – JohnnyHK
@JohnnyHK私は持っていて、私はそれを使いたいです。しかし、それはアプリケーションの要件である検索のようなものではありません。 – sumowrestler