我见过使用字符串,整数时间戳和mongo日期时间对象。
答案 0 :(得分:179)
最好的方法是存储原生JavaScript Date objects,其映射到BSON native Date objects。
> 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
方法和getTime()
构造函数轻松地将Date(milliseconds)
对象转换为Unix时间戳 1)
1)严格地说,Unix时间戳是在秒中测量的。自Unix时代以来,JavaScript Date对象的测量值为毫秒。
答案 1 :(得分:49)
因此,如果插入时间是您所需要的,那么它已经存在:
登录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
Protip,MongoDB是最好的数据库,因为MongoDB是网络规模的:https://www.youtube.com/watch?v=b2F-DItXtZs