sql >> Database >  >> NoSQL >> MongoDB

Mongoose vindt documenten als array een waarde bevat

Er zijn enkele manieren om dit te bereiken. De eerste is door $elemMatch operator:

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

De tweede is van $in of $all operators:

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

of

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 is als OR en $all zoals EN. Raadpleeg deze link voor meer informatie:https://docs.mongodb.com /manual/referentie/operator/query/all/

De derde is door aggregate() functie:

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

met aggregaat() krijg je slechts één categorie-ID in je categorie-array.



  1. Exporteren van Oracle naar MongoDB met python

  2. Swagger (Swashbuckle voor C#) toont Mongo ObjectId als meerdere velden in plaats van een enkele string

  3. Verwijder Redis op Mac OSX. Oudere versie is actief na het installeren van de update

  4. Mongodb-fout:de positionele operator heeft de vereiste match van de zoekopdracht niet gevonden