在Mongoose中,如何过滤对象数组

时间:2013-05-01 20:19:44

标签: node.js mongodb express mongoose

我有以下架构:

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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