ฉันเคยเห็นการใช้สตริงการประทับเวลาจำนวนเต็มและวัตถุวันที่และเวลา Mongo
ฉันเคยเห็นการใช้สตริงการประทับเวลาจำนวนเต็มและวัตถุวันที่และเวลา Mongo
คำตอบ:
วิธีที่ดีที่สุดคือการเก็บพื้นเมือง JavaScript วัตถุวันซึ่งแผนที่บน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") }
ประเภทเนทีฟรองรับวิธีการที่เป็นประโยชน์มากมายทั้งนอกกรอบซึ่งคุณสามารถใช้ในงานลดแผนที่ของคุณได้
หากคุณต้องการคุณสามารถแปลงDate
วัตถุเป็นและจากเวลา Unix 1)โดยใช้getTime()
วิธีการและตัวDate(milliseconds)
สร้างตามลำดับ
1)การพูดอย่างเคร่งครัดประทับเวลายูนิกซ์เป็นวัดในวินาที วัตถุวันที่ JavaScript วัดเป็นมิลลิวินาทีนับตั้งแต่ยุค Unix
389
และ240
เป็นมิลลิวินาทีของการประทับเวลา Z
ในรูปแบบสตริงบอก MongoDB ที่ประทับเวลาที่คุณให้อยู่ใน UTC หากคุณอ่านกลับมาแอปพลิเคชันของคุณอาจแปลงเป็นเขตเวลาท้องถิ่นของคุณทำให้ดูเหมือนว่าเวลาจะเปลี่ยนไป แต่เวลายังคงเหมือนเดิม แต่จะตีความจากมุมมองเขตเวลาที่ต่างกันเท่านั้น ตัวอย่าง12:50:42Z
และ13:50:42+01:00
เป็นตัวแทนของช่วงเวลาเดียวกันในเวลา
21:56:03+01:00
อยู่ในขณะนี้ใน CET และคุณใส่new Date()
แล้ว MongoDB อาจหมายถึง20:56:03Z
ว่ามันเป็น แต่เมื่อคุณอ่านและแสดงในแอปพลิเคชันของคุณโดยใช้การตั้งค่าเขตเวลาท้องถิ่น (CET) มันจะอ่าน21:56:03
อีกครั้ง
ดังนั้นหากเวลาแทรกคือสิ่งที่คุณต้องการมันมีอยู่แล้ว:
เข้าสู่ระบบเพื่อเปลือก 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
สร้างฐานข้อมูลของคุณโดยการแทรกรายการ
> 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
_id
หรือไม่
_id.getTimestamp()
แต่ที่อาจเกิดขึ้นพวกเขาจะมีผลเดียวกันของ