2017-09-25 1 views
0

J'ai un petit problème en mangouste où je veux sélectionner toutes les rangées excepté les ids indiqués.

Mon code par exemple:

var ids = [{id: 123},{id: 222},{id:333}]; 
User.find({_id: {$ne: ids.id }},'firstName lastName _id avatar',function (err,users) {...}); 

Problème exact: J'ai une variable avec de nombreux codes d'utilisateur, et je veux sélectionner que les utilisateurs sans que ces ids.

+0

Si votre tableau avait les clés exactes qui correspondent à la collection '_id' champ alors vous simplement en utilisant la requête [**' $ ni ** ** (https://docs.mongodb.com/manual/reference/operator/query/nor/) en tant que var ids = [{"_id": 123}, {"_id": 222}, { "_id": 333}]; User.find ({"$ nor": ids}, "Prénom Nom _id avatar", Fonction (err, utilisateurs) {...}); ' – chridam

Répondre

2

Nous allons utiliser le $nin de mongodb, qui exclut le tableau donné du résultat.

Nous réalisons une carte afin d'avoir un simple tableau d'id comme [123, 222, 333]

const ids = [ 
    { 
     id: 123, 
    }, { 
     id: 222, 
    }, { 
     id: 333, 
    }]; 

    User.find(
    // Query 
    { 
    _id: { 
     $nin: ids.map(x => x.id), 
    }, 
    }, 

    // Projection 
    'firstName lastName _id avatar', 

    // Callback 
    function (err,users) {...});