首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据特定日期和时间从mongo采集的数据池中筛选数据当天的不同时间

根据特定日期和时间从mongo采集的数据池中筛选数据当天的不同时间
EN

Stack Overflow用户
提问于 2018-01-30 11:53:41
回答 1查看 41关注 0票数 0

我有一个用例,在这个用例中,我必须根据特定日期以及该天之前的任何项目从pymongo中的mongo集合中筛选数据。

例如:

代码语言:javascript
运行
复制
 A- 2018-01-29 10:01:00
 B- 2018-01-29 10:11:00
 C- 2018-01-29 10:23:00

 D- 2018-01-28 11:01:00
 E- 2018-01-28 11:04:00

我有筛选关键字2018-01-29 10:24:00,那么我只需要返回A,B和C。如果我筛选关键字是2018-01-28 11:05:00,那么我只需要返回D和E。如果我有条件2018-01-29 10:13:00,那么我必须返回A和B。如果我筛选关键字是2018-01-28 11:02:00,那么我只需要返回D。扩展这一点,另一个条件是,如果我的键为2018-01-28 11:02:00,则案例A应返回D,案例B应返回E。类似地,对于密钥2018-01-29 10:13:00,案例A应返回A和B,案例B应仅返回C。

EN

回答 1

Stack Overflow用户

发布于 2018-01-30 12:11:32

您需要查找所有小于输入时间的记录,并且应该在同一小时内,您可以尝试

searchDate是日期条件

$date来自集合

代码语言:javascript
运行
复制
db.col.find(
    {$expr : 
        {$and : 
            [
                {$lte: ["$date", searchDate]}, 
                {$eq : [ {$hour : "$date"}, {$hour : searchDate}]},
                {$eq : [ {$dayOfMonth : "$date"}, {$dayOfMonth : searchDate}]},
                {$eq : [ {$month : "$date"}, {$month : searchDate}]},
                {$eq : [ {$year : "$date"}, {$year : searchDate}]},
            ]
        }
    }
)

聚合管道

代码语言:javascript
运行
复制
db.col.aggregate([
{$match:
    {$expr : 
        {$and : 
            [
                {$lte: ["$date", searchDate]}, 
                {$eq : [ {$hour : "$date"}, {$hour : searchDate}]},
                {$eq : [ {$dayOfMonth : "$date"}, {$dayOfMonth : searchDate}]},
                {$eq : [ {$month : "$date"}, {$month : searchDate}]},
                {$eq : [ {$year : "$date"}, {$year : searchDate}]},
            ]
        }
    }
}
])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48513627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档