有一些方法可以实现这一点。第一个是按$elemMatch
操作员:
const docs = await Documents.find({category: { $elemMatch: {$eq: 'yourCategory'} }});
// you may need to convert 'yourCategory' to ObjectId
第二个是由$in
or$all
运营商:
const docs = await Documents.find({category: { $in: [yourCategory] }});
或者
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
就像 OR 和$all
AND 一样。有关更多详细信息,请查看此链接:https ://docs.mongodb.com/manual/reference/operator/query/all/
第三个是按aggregate()
功能:
const docs = await Documents.aggregate([
{ $unwind: '$category' },
{ $match: { 'category': mongoose.Types.ObjectId(yourCategory) } }
]};
使用 aggregate() 您只能在类别数组中获得一个类别 ID。
我从我的项目中获得了这些代码片段,我必须在其中找到具有特定类别/类别的文档,因此您可以根据需要轻松自定义它。