我有以下架构:

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

我需要根据以下规则筛选记录:如果其中一个日期晚于给定的日期开始日期,请保留记录,否则,不要。
我觉得$gte或$lte是我需要的功能,但是我找不到正确使用它们的方法。我试过了
sampleSchema.find({date_begin: {$gte: 'date'}});

或者是其他的变体,但我似乎无法让它起作用。有人知道我该怎么做吗?

最佳答案

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

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

如果使用single query condition,则可以直接过滤:
SampleModel.find( { 'dates.date': { $gte: 'DATE_VALUE' } } )

07-26 09:43