如何mongoose list() - 通过子文档字段值过滤值

时间:2016-07-20 10:46:23

标签: node.js mongoose

所以我正在实现一个分页表,列出一些具有子文档的记录,我需要添加过滤功能,以便我可以使用子文档字段值过滤list()结果。

RConnection rServeConnection = new RConnection(R_SERVE_SERVER_ADDRESS, R_SERVE_SERVER_PORT);

所以基本上我想使用类别选择的类别来过滤我们的硬件。

这是我的实际代码;

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.
});

我收到了错误;不能将$ elemMatch与String一起使用。

基本上我需要;

  • 能够根据子文档字段值过滤结果。
  • 能够对结果进行分页
  • 能够对结果进行排序。

我该如何管理?

1 个答案:

答案 0 :(得分:0)

尝试此选项。

     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){
     })