当前位置:  开发笔记 > 编程语言 > 正文

在mongodb中存储日期/时间的最佳方式

如何解决《在mongodb中存储日期/时间的最佳方式》经验,为你挑选了2个好方法。

我见过使用字符串,整数时间戳和mongo日期时间对象.



1> Niels van de..:

最好的方法是存储本地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对象以毫秒为单位进行测量.


如何将其存储在数据库中?作为一个mongo日期时间对象?
@AboozarRajabi一般情况下,只要初始输入正确,您就不希望关注_how_它的存储.如果现在在CET中是`21:56:03 + 01:00'并且你插入`new Date()`,那么M​​ongoDB可能_represent_它为'20:56:03Z`.但是当你读回它并使用本地时区设置(CET)在应用程序中显示它时,它将再次显示为"21:56:03".
@Thilo:就我所知,MongoDB没有特殊的'datetime'对象.它使用JavaScript Date类型,以BSON格式存储.

2> Eric Leschin..:

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

因此,如果插入时间是您需要的,它已经存在:

登录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


但它是文档保存在数据库中的时间戳,有时您希望存储与插入日期无关的日期和时间.
@Redsandro没有,但可能他们可能会得到与`_id.getTimestamp()`相同的结果.
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有