При создании нового ObjectId в моем Node.js сценарии с помощью:Mongojs.ObjectId() производит неправильную метку времени
mongojs.ObjectId()
Я получаю _id как
“f5818257dd0b55ce321f87b5”
Когда я использую:
mongojs.ObjectId(“f5818257dd0b55ce321f87b5”).getTimestamp()
я получаю:
“Sun Jul 10 2016 19:12:21 GMT+0200 (CEST)"
Но когда я использую ObjectId("f5818257dd0b55ce321f87b5").getTimestamp()
в MongoDB Shell я получаю:
ISODate("2100-07-10T12:23:51Z")
Когда я хочу, чтобы отсортировать мои документы по _id
с:
db.stores.find().sort({_id: -1})
документы возвращаются в неправильном порядке, поскольку метка времени в ObjectId
неверна.
Как получить mongojs для производства ObjectIds
в правильном формате?
Я действительно смущен, может ли кто-нибудь мне помочь?
Edit: Когда я вставляю документ с mongojs я получаю ObjectId как:
“30a282576f9f2c4772e69cd9”
Когда я получаю временную метку с:
ObjectId("30a282576f9f2c4772e69cd9").getTimestamp()
возвращает:
ISODate("1995-11-09T22:36:07Z")
Но когда я вставляю документ с помощью оболочки MongoDB, я получаю ObjectId вроде:
“5782a4809f3c4cbed9f2a8a1”
Когда я получаю временную метку из этого идентификатора с помощью:
ObjectId("5782a4809f3c4cbed9f2a8a1").getTimestamp()
я получаю:
ISODate("2016-07-10T19:39:44Z")
Эти два документа созданы как 5 минут друг от друга. Почему дата в ObjectId вставлена с mongojs неправильно?
Какая версия драйвера MongoDB Node.js вы используете? Я могу воспроизвести это неправильное поведение с драйвером узла 2.2.0 (и поднял https://jira.mongodb.org/browse/NODE-749), но версии 2.1.21 и старше выглядят нормально. – Stennie
Спасибо, я действительно использовал mongodb 2.2.0 i, обновленный до 2.2.1, и теперь он работает, как и ожидалось. –