node.js - 在 Mongoose 中,如何过滤对象数组

标签 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'}});

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

最佳答案

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

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

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

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

关于node.js - 在 Mongoose 中,如何过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325817/

相关文章:

mysql - 得到 .findOrCreate() 错误

node.js - Mongodb 和 Express 从 _id 中删除项目

node.js - Mongoose 在嵌入模式时分离文档?

javascript - 使用 React 和 Axios 从 Express API 下载文件

javascript - 如何使用 async/await 正确编写此内容

node.js - Nodejs - 这段代码的执行顺序是什么? for of 循环内的异步等待

angularjs - ng-serve 无法在 ubuntu 上运行

javascript - 如何使用Meteor和MongoDB从数组中的对象返回子文档

angularjs - AngularJS 与 PassportJS 组合时的 CORS 问题

node.js - 使用 express-namespace 调用两次中间件的 Express 请求