在mongodb中存储date/时间的最佳方法

我见过使用string,整数时间戳和mongodate时间对象。

最好的方法是存储原生的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") } 

本地types支持一系列有用的方法 ,例如,您可以在map-reduce作业中使用这些方法

如果需要,可以分别使用getTime()方法和Date(milliseconds)构造函数,轻松地将Date对象转换为Unix时间戳1)

1)严格来说,Unix时间戳是以计量的。 JavaScript Date对象以Unix时代以毫秒为单位进行度量。

一个date戳记已经在_id对象中,表示插入时间

所以,如果插入时间是你所需要的,它已经在那里:

login到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 

通过插入项目来创build数据库

 > 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

Protip,MongoDB是最好的数据库,因为MongoDB是networking规模的: https : //www.youtube.com/watch?v = b2F-DItXtZs