mysql - Mongodb : Query based on time in ISODate format. 我的查询有什么问题?

标签 mysql node.js mongodb date

假设Mongodb数据库中的示例文档如下:

 { "date" : ISODate("2015-11-09T05:58:19.474Z") }
 { "date" : ISODate("2014-10-25T07:30:00.241Z") }
 { "date" : ISODate("2015-11-30T15:24:00.251Z") }
 { "date" : ISODate("2012-01-10T18:36:00.101Z") }

预期:

 { "date" : ISODate("2015-11-09T05:58:19.474Z") }
 { "date" : ISODate("2014-10-25T07:30:00.241Z") }

我尝试了以下查询:

 collection.find({"$and": [{ "date" : { "$gt": [ {"$hour": "$date"}, 4] } }, 
                           {"date" :{ "$lt": [ {"$hour": "$date"}, 8] } } 
                 ]}); 

此查询未产生任何结果。 Mongodb : Query based on time in ISODate format 中接受的答案在哪里做。我哪里错了?

注意:我是用nodejs连接mongodb

最佳答案

查询没有产生任何结果,因为 $hour运算符仅适用于聚合管道,不适用于 find() 查询。因此,在您的聚合中,您的管道有两个步骤,$project这将创建一个新字段,其中包含小时部分和下一阶段 $match然后查询文档。

因此您最终的聚合操作将是这样的:

var pipeline = [
    {
        "$project": {
            "hour": { "$hour": "$date" },
            "date": 1
        }
    },
    {
        "$match": {
            "hour": { "$gt": 4,  "$lt": 8}
        }
    }
]

db.collection.aggregate(pipeline);

关于mysql - Mongodb : Query based on time in ISODate format. 我的查询有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666398/

相关文章:

php - 如何从三个不同的表php中查询总计的SELECT SUM

python - 如何连接两个独立数据库的两个模型 python peewee

mysql - Kohana ORM,重写 ORDER BY 和 GROUP BY 查询

javascript - 如何使用 pg-promise 传递表名和参数

mysql - docker nodejs容器无法连接mysql容器

javascript - 在 Meteor.JS Handlebars 中将对象转换为数组后无法拆分字符串

java - Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用

php - Codeigniter ActiveRecord : join backticking

mongodb - 如何在 mongodb 模式中使用翻译后的字符串?

node.js - 这个错误: Falsy value for recipient key 'registrationTokens' 是什么意思