("不是US - ")Mongo DB中的日期

时间:2016-05-08 15:10:54

标签: php mongodb date

我已经使用mongo db(通过PHP)声明并且日期格式存在问题。

用户可以使用简单输入日期,例如01.01.2016或31.12.2016。我应该如何在mongo中存储日期?

我已经搜索过并找到了像

这样的方式
  • 转换为ISODate日期并保存此日期;在find()上将此日期重新传输到dd.mm.yyyy
  • 使用MongoDate的组合(strtotime(" US-Date-Format"))

但我不想将我的dd.mm.yyyy格式更改为US然后保存。在find()上回来了。

如果我存储dd.mm.yyyy,我无法对其进行排序,它将作为字符串处理。

    > db.test.find({"date": {$exists: true}}).sort({date: 1}).pretty()
   { "_id" : ObjectId("572f524c8cf7decc1f0041a9"), "date" : "11.10.2016" }
   { "_id" : ObjectId("572f52338cf7dea8110041ab"), "date" : "11.12.2015" }
   { "_id" : ObjectId("572f521a8cf7ded51e0041aa"), "date" : "11.12.2016" }
   { "_id" : ObjectId("572f523f8cf7dedf1f0041aa"), "date" : "11.12.2017" }
   { "_id" : ObjectId("572f50ab8cf7dec51f0041a9"), "date" : "12.12.2016" }

在mysql / postgres中我只想定义日期字段,它会自动处理。 mongo是否有相同的方式,或者我必须通过3种方式进行吗?

1 个答案:

答案 0 :(得分:0)

将日期存储为ISODate是一种可行的方法。除了将日期转换为MongoDate(strtotime("US-Date-Format"))之外,还有更多方法,例如,您可以查看Doctrine ODM是handling transformation的原因。在某些类处理存储中隐藏这种转换相当容易。

如果您刚刚开始使用Mongo和PHP进行冒险,最好使用new driver及其library,因为旧版本已被弃用。