我见过使用字符串,整数时间戳和mongo datetime对象。
最好的方法是存储原生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作业中使用这些方法。
如果需要,可以分别使用getTime()方法和Date(毫秒)构造函数,轻松地将Date对象转换为Unix时间戳1)。
1)严格地说,Unix时间戳是以秒为单位测量的。JavaScript Date对象以Unix纪元以来的毫秒为单位。
_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
使用下面的代码创建一个可以在文档中分配的datetime变量(注意,我创建的是一个datetime对象,而不是一个date对象):
from datetime import date
from datetime import datetime
import random
def random(date):
my_year=random.randint(2020,2022)
my_month=random.randint(1,12)
my_day=random.randint(1,28)
selected=datetime(year = my_year, month = my_month, day = my_day, hour = 0, minute = 0, second = 0)
def insert_objects(collection):
collection.insert_one( { "mydate": random_date() })
我认为当你使用pymongo, MongoDB将存储本机Python datetime对象作为一个日期字段。MongoDB中的Date字段可以方便以后与日期相关的查询(例如查询间隔)。因此,这样的代码可以在Python中工作
from datetime import datetime
datetime_now = datetime.utcnow()
new_doc = db.content.insert_one({"updated": datetime_now})
在此之后,我可以在我的数据库中看到如下字段(我使用Mongo Compass查看我的数据库)。注意它不是存储为字符串(没有引号),并且它将Date显示为字段类型。
关于javascript的使用,这也应该在那里工作。只要在日期的末尾有+00:00(在我的例子中是UTC)或Z, Javascript就应该能够正确读取带有时区信息的日期。
推荐文章
- elasticsearch vs . MongoDB用于过滤应用程序
- 解析日期字符串并更改格式
- Java SimpleDateFormat("yyyy-MM-dd' t ' hh:mm:ss' z '")给出的时区为IST
- MongoDB记录所有查询
- 在Java中转换字符串到日历对象
- ZoneOffset之间的区别是什么。UTC和ZoneId.of(“UTC”)?
- 如何检查DST(日光节约时间)是否有效,如果是,偏移量?
- 如何在Android中获取当前日期?
- 如何创建一个日期对象从字符串在javascript
- MongoDB:如何找到安装的MongoDB的确切版本
- 如何使用mongoimport导入CSV文件?
- 单元测试:日期时间。现在
- SQL Developer只返回日期,而不是时间。我怎么解决这个问题?
- 在mongodb中存储日期/时间的最佳方法
- 如何排序mongodb与pymongo