【问题标题】: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 })

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案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()
        猜你喜欢
        • 1970-01-01
        • 2021-01-14
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 2014-07-14
        • 2012-02-17
        • 2020-06-02
        • 2012-02-03
        相关资源
        最近更新 更多