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

Mongoose finder dokumenter, hvis array indeholder en værdi

Der er nogle måder at opnå dette på. Den første er ved $elemMatch operatør:

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

Den anden er af $in eller $all operatører:

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

eller

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 er som OR og $all gerne OG. For yderligere detaljer, tjek dette link:https://docs.mongodb.com /manual/reference/operator/query/all/

Den tredje er af aggregate() funktion:

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

med aggregate() får du kun ét kategori-id i dit kategoriarray.



  1. Kan MongoDB aggregeringsramme $group returnere en række værdier?

  2. Mongoid Query DB af Virtual Attribute

  3. Sådan udskrives minimumsresultat i MongoDB

  4. hvordan tilføjer jeg en værdi til toppen af ​​et array i mongodb?