Jest kilka sposobów na osiągnięcie tego. Pierwszy to $elemMatch
operator:
const docs = await Documents.find({category: { $elemMatch: {$eq: 'yourCategory'} }});
// you may need to convert 'yourCategory' to ObjectId
Drugi to $in
lub $all
operatorzy:
const docs = await Documents.find({category: { $in: [yourCategory] }});
lub
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
jest jak OR i $all
jak I. Aby uzyskać więcej informacji, sprawdź ten link:https://docs.mongodb.com /podręcznik/odniesienie/operator/zapytanie/wszystko/
Trzeci to aggregate()
funkcja:
const docs = await Documents.aggregate([
{ $unwind: '$category' },
{ $match: { 'category': mongoose.Types.ObjectId(yourCategory) } }
]};
z agregacją() otrzymujesz tylko jeden identyfikator kategorii w swojej tablicy kategorii.