web-dev-qa-db-ja.com

複数の条件を持つマングース「検索」

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演算子を使用しようとしましたが、動作させることができませんでした。

16
Skywalker
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);

 });
45
Vishnu

両方が同時に存在する限り、任意の地域またはセクターを含む結果が必要な場合は、User.findで次のクエリが必要です:{region: {$exists:true},sector: {$exists:true}}

,は、異なるフィールドを検索している限り、$andと同等です。

8
Ron Wertlen