猫鼬按日期查询

Posted

技术标签:

【中文标题】猫鼬按日期查询【英文标题】:Mongoose query by date 【发布时间】:2017-03-12 23:05:28 【问题描述】:

我想用这样的文档结构查询 mongoDB:

var ExampleSchema = mongoose.Schema(
    createdAt:  type: Date, default: Date.now ,
    validUntil: Date,
    name: String
);

并且需要它只返回有效文档,即validUntil大于当前时间。这个不行,mongoose返回所有文档:

var d = new Date();
var n = d.toISOString();
Example.find( '$where': 'validUntil'>n )

【问题讨论】:

【参考方案1】:

如果在今天找到,请使用momentjs

// start today
var start = moment().startOf('day');
// end today
var end = moment(today).endOf('day');

Example.find( validUntil:  '$gte': start, '$lte': end )

【讨论】:

【参考方案2】:

获取今天所有创建的帐户:

  let start = new Date(now.getFullYear(),now.getMonth(),now.getDate(),1,0,0);

  let end = new Date(now.getFullYear(),now.getMonth(),now.getDate()+1,0,59,59);

  let query = createdAt: $gte: start, $lt: end ;

  Account
  .find(query)
  .exec((err, accounts) => console.log(account) )

【讨论】:

【参考方案3】:

像这样使用$gte

Example.find(
    validUntil: 
        $gte: new Date(2016,09,30)
    
)

【讨论】:

@chovy Date.now() 返回一个数字而不是 Date 对象。如果要与当前日期进行比较,则只需使用new Date()

以上是关于猫鼬按日期查询的主要内容,如果未能解决你的问题,请参考以下文章

无法使用猫鼬按日期获取集合

在猫鼬中,我如何按日期排序? (node.js)

猫鼬如何在模型中设置日期格式

在猫鼬中格式化日期

每次更新猫鼬模式中的日期

如何以 HTML5 输入类型日期格式(dd/mm/yyyy)显示猫鼬日期,