Có một số cách để đạt được điều này. Cách đầu tiên là $elemMatch
nhà điều hành:
const docs = await Documents.find({category: { $elemMatch: {$eq: 'yourCategory'} }});
// you may need to convert 'yourCategory' to ObjectId
Cái thứ hai là của $in
hoặc $all
toán tử:
const docs = await Documents.find({category: { $in: [yourCategory] }});
hoặc
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
giống như OR và $all
Thích và. Để biết thêm chi tiết, hãy xem liên kết này: https://docs.mongodb.com / manual / reference / operator / query / all /
Cái thứ ba là của aggregate()
chức năng:
const docs = await Documents.aggregate([
{ $unwind: '$category' },
{ $match: { 'category': mongoose.Types.ObjectId(yourCategory) } }
]};
với tổng hợp (), bạn chỉ nhận được một id danh mục trong mảng danh mục của mình.