MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongoose trova i documenti se l'array contiene un valore

Ci sono alcuni modi per ottenerlo. Il primo è con $elemMatch operatore:

const docs = await Documents.find({category: { $elemMatch: {$eq: 'yourCategory'} }});
// you may need to convert 'yourCategory' to ObjectId

Il secondo è di $in o $all operatori:

const docs = await Documents.find({category: { $in: [yourCategory] }});

o

const docs = await Documents.find({category: { $all: [yourCategory] }});
// you can give more categories with these two approaches 
//and again you may need to convert yourCategory to ObjectId

$in è come OR e $all come E. Per ulteriori dettagli, controlla questo link:https://docs.mongodb.com /manual/reference/operator/query/all/

Il terzo è di aggregate() funzione:

const docs = await Documents.aggregate([
    { $unwind: '$category' },
    { $match: { 'category': mongoose.Types.ObjectId(yourCategory) } }
]};

con aggregate() ottieni solo un ID di categoria nell'array di categorie.