在存储ISODate格式日期

时间:2017-12-28 05:14:45

标签: python mongodb isodate

我的Mongo数据库的文档结构如下(只是组成值,而不是实际值):

{
_id: ObjectId("1")
other_fields: "values1"
people: Array
  0: Object
    NAME: John
    SCHEDULED_DATE: "2017-05-03T12:00:00.000Z"
  1: Object
    NAME: Mary
    SCHEDULED_DATE: "2017-06-03T11:00:00.000Z"
}

在每个文档中,都有一个名为people的子文档。人是一个对象数组。这些"中的每一个" object有一个SCHEDULED_DATE字段,它是STRING类型,但存储在里面的值实际上是一个ISODate格式。

我尝试用以下条件查询。

db.collection.find(
  {'people.SCHEDULED_DATE': {'$gt': '2017-11-01', '$lt': '2017-11-30'}}
)

查询返回8条记录,其中7条记录在11月份有人.CHEDEDEDED_DATE。但是,还有一个文档返回,其中所有" people"中的所有SCHEDULED_DATE字段都在其中。子文件不在11月。

我尝试了不同日期范围的此查询,我尝试了{" $ gt"," $ lt"},{" $ gte&#的不同组合34;," $ lte"}等等。还会返回一些不相关的记录。

我知道我可以在DB中以ISODate()格式存储东西。但是这个DB存储的是直接从第三方获得的东西,我们无法改变格式。

问题: 1.为什么查询返回所有人的记录.SCHEDULED_DATE不在范围内? 2.我的问题有一个优雅的解决方案吗?即查询带有一系列日期的people.SCHEDULED_DATE(字符串格式)

0 个答案:

没有答案