Câu trả lời:
Cách tốt nhất là lưu trữ các đối tượng Ngày JavaScript gốc , ánh xạ vào các đối tượng Ngày gốc của BSON .
> 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") }
Kiểu gốc hỗ trợ toàn bộ một loạt các phương thức hữu ích , ví dụ, bạn có thể sử dụng các công việc giảm bản đồ của mình.
Nếu bạn cần, bạn có thể dễ dàng chuyển đổi Date
các đối tượng sang và từ dấu thời gian Unix 1) , bằng cách sử dụng getTime()
phương thức và hàm Date(milliseconds)
tạo tương ứng.
1) Nói đúng ra, dấu thời gian Unix được đo bằng giây . Đối tượng Ngày JavaScript đo bằng mili giây kể từ thời kỳ Unix.
389
và 240
là một phần nghìn giây của dấu thời gian. Các Z
trong định dạng chuỗi kể MongoDB rằng dấu thời gian mà bạn cung cấp là trong giờ UTC. Nếu sau đó bạn đọc lại, ứng dụng của bạn có thể chuyển đổi nó thành múi giờ địa phương của bạn , làm cho nó có vẻ như thời gian đã thay đổi. Nhưng thời gian vẫn vậy, nó chỉ được giải thích từ một góc độ múi giờ khác. Ví dụ 12:50:42Z
và 13:50:42+01:00
đại diện cho cùng một thời điểm trong thời gian.
21:56:03+01:00
hiện tại trong CET và bạn chèn new Date()
, thì MongoDB có thể đại diện cho nó là 20:56:03Z
. Nhưng khi bạn đọc lại và hiển thị nó trong ứng dụng của mình bằng cài đặt múi giờ cục bộ (CET), nó sẽ đọc 21:56:03
lại.
Vì vậy, nếu thời gian chèn là những gì bạn cần, thì nó đã có:
Đăng nhập vào vỏ mongodb
ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test
Tạo cơ sở dữ liệu của bạn bằng cách chèn các mục
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
Hãy làm cho cơ sở dữ liệu đó là cơ sở dữ liệu chúng ta đang có
> use penguins
switched to db penguins
Lấy lại các hàng:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
Nhận từng hàng ở định dạng 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
Nếu điều đó cuối cùng làm bạn bối rối, tôi có một hướng dẫn về cách hoạt động ở đây: https://stackoverflow.com/a/27613766/445131
_id
không?
_id.getTimestamp()
.