如何猫鼬列表() - 按子文档字段值过滤值
Posted
技术标签:
【中文标题】如何猫鼬列表() - 按子文档字段值过滤值【英文标题】:How to mongoose list() - filtering values by subdocument field value 【发布时间】:2016-11-23 13:32:56 【问题描述】:所以我正在实现一个分页表,其中列出了一些具有子文档的记录,我需要添加过滤功能,以便我可以使用子文档字段值过滤 list() 结果。
let HardwareSchema = new mongoose.Schema(
name: type: String, required: true , // the exact name of the hardware.
slug: type: String, unique: true , // the hardware's slug.
category: type: String, ref: 'HardwareCategory', required: true ,
let HardwareCategorySchema = new mongoose.Schema(
name: type: String, unique: true, required: true , // the name of the category.
slug: type: String, unique: true , // the slug of the category.
description: type: String, unique: true, required: true , // the name of the category.
createdBy: type: String, ref: 'User', required: true // the original submitter of the document.
);
所以基本上我想使用类别选择类别来过滤我们的硬件。
这是我的实际代码;
const options =
perPage: 10,
page: (req.query.page > 0 ? req.query.page : 1) - 1,
sortBy: 'rank': -1 ,
criteria:
status: 'approved',
category:
$elemMatch: 'slug': category
;
Hardware.list(options)
.then(results => );
我收到了错误;不能将 $elemMatch 与字符串一起使用。
所以基本上我需要;
能够根据子文档字段值过滤结果。 能够对结果进行分页 能够对结果进行排序。我该如何管理?
【问题讨论】:
【参考方案1】:试试这个选项。
const options =
perPage: 10,
page: (req.query.page > 0 ? req.query.page : 1) - 1,
sortBy: 'rank': -1 ,
criteria:
status: 'approved',
'category.slug' : category
;
或者你可以使用 find() 之类的
Hardware.find(
'category.slug' : category
, function(err, data)
)
【讨论】:
以上是关于如何猫鼬列表() - 按子文档字段值过滤值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mongoose 查询过滤到数组类型字段中具有指定值的文档?