我已经使用mongo db(通过PHP)声明并且日期格式存在问题。
用户可以使用简单输入日期,例如01.01.2016或31.12.2016。我应该如何在mongo中存储日期?
我已经搜索过并找到了像
这样的方式但我不想将我的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种方式进行吗?
答案 0 :(得分:0)
将日期存储为ISODate是一种可行的方法。除了将日期转换为MongoDate(strtotime("US-Date-Format"))
之外,还有更多方法,例如,您可以查看Doctrine ODM是handling transformation的原因。在某些类处理存储中隐藏这种转换相当容易。
如果您刚刚开始使用Mongo和PHP进行冒险,最好使用new driver及其library,因为旧版本已被弃用。