Answers:
最好的方法是存储本机JavaScript Date对象,该对象映射到BSON本机Date对象。
> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }
本机类型开箱即用地支持各种有用的方法,例如,您可以在您的map-reduce作业中使用它们。
如果需要,可以分别使用方法和构造函数轻松地将Date
对象与Unix时间戳1)之间进行转换。getTime()
Date(milliseconds)
1)严格来说,Unix时间戳以秒为单位。自从Unix时代以来,JavaScript Date对象以毫秒为单位。
21:56:03+01:00
现在在CET中插入了new Date()
,那么MongoDB可能表示为20:56:03Z
。但是,当您读回它并使用本地时区设置(CET)将其显示在应用程序中时,它将21:56:03
再次读取。
因此,如果您需要插入时间,那么它已经存在:
登录到mongodb shell
ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test
通过插入项目创建数据库
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
让该数据库成为我们现在使用的数据库
> use penguins
switched to db penguins
获取行:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
以yyyy-MM-dd HH:mm:ss格式获取每一行:
> db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) })
2014-12-23 3:4:41
2014-12-23 3:4:53
如果最后一句话使您感到困惑,那么我将在这里提供一个如何工作的演练:https : //stackoverflow.com/a/27613766/445131
_id
吗?
_id.getTimestamp()
。