MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose findet Dokumente, wenn das Array einen Wert enthält

Es gibt einige Möglichkeiten, dies zu erreichen. Der erste ist durch $elemMatch Betreiber:

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

Der zweite ist von $in oder $all Operatoren:

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

oder

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 ist wie OR und $all Wie und. Weitere Einzelheiten finden Sie unter diesem Link:https://docs.mongodb.com /manual/reference/operator/query/all/

Der dritte ist durch aggregate() Funktion:

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

Mit Aggregat() erhalten Sie nur eine Kategorie-ID in Ihrem Kategorie-Array.