web-dev-qa-db-fra.com

mangouste "Find" avec plusieurs conditions

J'essaie d'obtenir des données de ma base de données mongoDB en utilisant des filtres de mangouste. Le scénario est que chaque objet utilisateur dans la base de données possède certains champs comme "Region" ou "Sector".

Actuellement, je reçois tous les utilisateurs qui contiennent le mot-clé "region" dans cet objet comme ceci:

 // 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);

});
});

Comment peut mettre certaines conditions dans la mangouste pour qu'elle renvoie des utilisateurs qui contiennent à la fois "region" && "Sector" dans leurs objets. Actuellement, il ne renvoie que l'utilisateur qui a le mot-clé region.

J'ai essayé d'utiliser $ et operator mais je n'ai pas pu le faire fonctionner.

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

 });
});

Si vous voulez des données avec une région: "NA" ou un secteur: "Certains secteurs". vous pouvez utiliser $or opérateur.

User.find({$or:[{region: "NA"},{sector:"Some Sector"}]}, function(err, user) 
 {
    if (err)
    {
        res.send(err);
    }
    console.log(user);
    res.json(user);

 });
45
Vishnu

Si vous voulez des résultats qui contiennent une région ou un secteur tant que les deux sont présents en même temps, vous avez besoin de la requête suivante dans votre User.find: {region: {$exists:true},sector: {$exists:true}}

, est l'équivalent de $and tant que vous recherchez différents champs.

8
Ron Wertlen