Pymongo - 纪元日期过滤器查询不适用于收集

时间:2021-06-11 16:42:19

标签: mongodb date filter pymongo

我有一个需要通过文档中的日期字段过滤的 Mongodb 集合。日期以unix epoch格式存储。

set.seed(8675309)
n <- 16
data <- data.frame(
  age = factor(rep(c('young', 'old'), each=8)),
  group=rep(LETTERS[1:2], n/2),
  yval=rnorm(n)
)

ggplot(data, aes(x=group, y=yval))+
  geom_boxplot(aes(color=group), outlier.shape = NA)+
  geom_point(aes(color=group, shape=age, fill=group, group=group),size = 1.5, position=position_jitterdodge())+
  scale_shape_manual(values = c(21,24))+
  scale_color_manual(values=c("black", "#015393"))+
  scale_fill_manual(values=c("white", "#015393"))+
  theme_classic()

这应该返回 20 万个文档,但它返回了超过 100 万个文档。

但是,当我从 MongoDB Compass 运行过滤器时,我得到了正确的结果。

1 个答案:

答案 0 :(得分:0)

我认为 pymongo 不支持使用 Unix Epoch 查询 ISODate 键。

您必须在查询之前手动将其转换为 pythons datetime 格式。

from datetime import datetime

myquery = {"created_at": {"$gt": datetime.utcfromtimestamp(1623384000)}}
docs = mycollection.find(myquery)