sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose hittar dokument om arrayen innehåller ett värde

Det finns några sätt att uppnå detta. Det första är genom $elemMatch operatör:

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

Den andra är av $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 är som OR och $all gillar AND. För ytterligare information kolla denna länk:https://docs.mongodb.com /manual/reference/operator/query/all/

Den tredje är av aggregate() funktion:

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

med aggregate() får du bara ett kategori-id i din kategoriarray.



  1. Hadoop Map/Reduce vs inbyggd Map/Reduce

  2. MongoDB index/RAM-förhållande

  3. Introduktion till MongoDB-datatyper

  4. är procedur finns i mongodb