Mongooseフィルターを使用して、mongoDBデータベースからデータを取得しようとしています。シナリオは、データベース内の各ユーザーオブジェクトに"Region"または"Sector"などの特定のフィールドがあることです。
現在、私はそのようなオブジェクトにキーワード"region"を含むすべてのユーザーを取得しています:
// Filter all healthcare bios by region
app.get('/user',function(req, res) {
// use mongoose to get all users in the database
User.find({region: "NA"}, function(err, user)
{
// if there is an error retrieving, send the error. nothing after res.send(err) will execute
if (err)
{
res.send(err);
}
// return all todos in JSON format
console.log(user);
res.json(user);
});
});
オブジェクトに "region" && "Sector"の両方を含むユーザーを返すという条件をmongooseに設定するにはどうすればよいですか。現在、regionキーワードを持つユーザーのみが返されます。
$ and演算子を使用しようとしましたが、動作させることができませんでした。
app.get('/user',function(req, res) {
User.find({region: "NA",sector:"Some Sector"}, function(err, user)
{
if (err)
{
res.send(err);
}
console.log(user);
res.json(user);
});
});
Region: "NA"またはsector: "Some Sector"のいずれかのデータが必要な場合。 $or
演算子を使用できます。
User.find({$or:[{region: "NA"},{sector:"Some Sector"}]}, function(err, user)
{
if (err)
{
res.send(err);
}
console.log(user);
res.json(user);
});
両方が同時に存在する限り、任意の地域またはセクターを含む結果が必要な場合は、User.find
で次のクエリが必要です:{region: {$exists:true},sector: {$exists:true}}
,
は、異なるフィールドを検索している限り、$and
と同等です。