例えば
var Company = mongoose.model('Company');
Company.find(
{
"$or": [
{ "companyName": req.query.companyName },
{ "position": req.query.position },
{ "areaOfExpertise": req.query.areaOfExpertise },
{ "zip": req.query.zip },
{ "country": req.query.country }
]
}, function(err, docs) {
res.json(docs);
}
);
あなたは、彼らはその後、nullでない場合は別のアプローチは、空のパラメータをチェックするクエリを構築することになり、$or
の論理演算子でクエリをラップする必要がありますこれをクエリの一部として含めます。たとえば、あなたは自分のクエリは、キーを想定してreq.query
オブジェクトを使用することができ、以下のように、ドキュメントのフィールドと同じです:上記で
/*
the req.query object will only have two parameters/keys e.g.
req.query = {
position: "Developer",
country: "France"
}
*/
var Company = mongoose.model('Company');
Company.find(req.query, function(err, docs) {
if (err) throw err;
res.json(docs);
});
、req.query
オブジェクトがクエリとして機能していますカンマで区切られた式のリストを指定するとき、MongoDBは暗黙的なAND
オペレーションを提供するので、暗黙の論理AND
オペレーションが実行されます。同じフィールドまたは演算子を複数の式で指定する必要がある場合は、$and
の演算子を使用する必要があります。
あなたが満たす論理AND
とOR
両方すなわちposition
とcountry
ためのクエリまたは任意の他のフィールド与え例えば両方の句の条件に一致するすべての文書を返すクエリの後にあるなら、あなたは、クエリを微調整すること
var Company = mongoose.model('Company');
Company.find(
{
"$or": [
{ "companyName": req.query.companyName },
{
"position": req.query.position,
"country": req.query.country
},
{ "areaOfExpertise": req.query.areaOfExpertise },
{ "zip": req.query.zip }
]
}, function(err, docs) {
res.json(docs);
}
);
が、その後、再び、これはパラメータ等が必須として参加するために必要なものをクエリの対象となる可能性が
私はそれを試してみます。どうもありがとうございました。 – Rasmus
私は「UI開発者」と「フランス」を検索すると、すべての国の開発者とフランスのすべての職種を返すため、別の解決策を見つける必要があります。 – Rasmus
特定のクエリ句が論理的な「AND」を満たすように、つまり両方の条件に一致するすべてのドキュメントを返すように、上記のクエリを微調整する必要があります。 – chridam