【问题标题】:In Mongoose, how to filter an array of objects在 Mongoose 中,如何过滤对象数组
【发布时间】:2013-04-25 21:41:15
【问题描述】:

我有以下架构:

var sampleSchema = new Schema({
  name: String,
  dates: [{
    date: Date,
    duration: Number
  }]
});

我需要根据以下规则过滤记录:如果其中一个日期晚于给定日期 date_begin,则保留记录,否则不要。

我的印象是 $gte 或 $lte 是我需要的功能,但我找不到正确使用它们的方法。我试过了

sampleSchema.find({date_begin: {$gte: 'date'}});

或其中的一些变体,但我似乎无法使其工作。任何人都知道我应该如何做到这一点?

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    要查询数组中的元素,使用$elemMatch:

    SampleModel.find( { dates : { $elemMatch: {  date : { $gte: 'DATE_VALUE' } } } } )
    

    如果你使用的是single query condition,你可以直接过滤:

    SampleModel.find( { 'dates.date': { $gte: 'DATE_VALUE' } } )
    

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2022-12-12
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2018-11-22
      • 2020-07-03
      相关资源
      最近更新 更多