130 votes

Requête Mongoose où la valeur n'est pas nulle

Je cherche à faire la requête suivante :

Entrant
    .find
      enterDate : oneMonthAgo
      confirmed : true
    .where('pincode.length > 0')
    .exec (err,entrants)->

Est-ce que je fais la clause where correctement ? Je veux sélectionner les documents où pincode n'est pas nulle.

245voto

numbers1311407 Points 15653

Vous devriez être en mesure de le faire (puisque vous utilisez l'API de requête) :

Entrant.where("pincode").ne(null)

... ce qui aboutira à une requête mongo ressemblant à :

entrants.find({ pincode: { $ne: null } })

Quelques liens qui pourraient vous aider :

20voto

Tính Ngô Quang Points 1949

Un

sélectionne les documents où la valeur du champ n'est pas égale à la valeur spécifiée. Cela inclut les documents qui ne contiennent pas le champ.

User.find({ "username": { "$ne": 'admin' } })

$nin

$nin sélectionne les documents où : la valeur du champ n'est pas dans le tableau spécifié ou le champ n'existe pas.

User.find({ "groups": { "$nin": ['admin', 'user'] } })

10voto

MalcolmOcean Points 1288

J'ai atterri ici et mon problème est que j'ai fait une demande pour

{$not: {email: /@domain.com/}}

au lieu de

{email: {$not: /@domain.com/}}

1voto

user2761808 Points 39

Ok les gars, j'ai trouvé une solution possible à ce problème. J'ai réalisé que les jointures n'existent pas dans Mongo, c'est pourquoi vous devez d'abord interroger les identifiants des utilisateurs avec le rôle que vous souhaitez, et après cela faire une autre requête sur le document des profils, quelque chose comme ceci :

    const exclude: string = '-_id -created_at -gallery -wallet -MaxRequestersPerBooking -active -__v';

  // Get the _ids of users with the role equal to role.
    await User.find({role: role}, {_id: 1, role: 1, name: 1},  function(err, docs) {

        // Map the docs into an array of just the _ids
        var ids = docs.map(function(doc) { return doc._id; });

        // Get the profiles whose users are in that set.
        Profile.find({user: {$in: ids}}, function(err, profiles) {
            // docs contains your answer
            res.json({
                code: 200,
                profiles: profiles,
                page: page
            })
        })
        .select(exclude)
        .populate({
            path: 'user',
            select: '-password -verified -_id -__v'
            // group: { role: "$role"} 
          })
    });

0voto

Totalise les documents où la valeur du champ n'est pas égale à la valeur spécifiée.

async function getRegisterUser() {
    return Login.count({"role": { $ne: 'Super Admin' }}, (err, totResUser) => {
        if (err) {
            return err;
        }
        return totResUser;
    })
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X