2015-11-30 3 views
1

Я создал объект в Монго, который имеет CUSTOMERID свойства:ObjectId изменяется, когда объект выбран?

ObjectId("5631366e47da4eb120e5bf3a") 

Однако я заметил юг выбрать с помощью этого объекта Id не работал, и при запросе моего object.customerId я вместо того, чтобы получить :

Object {_bsontype: "ObjectID", id: "V16nGÚN± å¿:"} 

Который не подходит. Почему мой объект Id отличается при выборе?

+0

Вы говорите, вы делаете 'найти ({CUSTOMERID: ObjectId («5631366e47da4eb120e5bf3a»)}) '? Это не сработает, потому что вы должны запрашивать '_id', а не' customerid' –

+0

Очевидно, что он читает шестнадцатеричное значение ASCII каждого символа. 56 = V, 31 = 1, 36 = 6, 6e = n, ... – CydrickT

ответ

0

Ваш запрос возвращает необработанный ObjectID. Согласно documentation это 12-байтовому типу BSON, построено с использованием:

  • значения 4 байта, представляющие секунды с началом эпохи Unix,
  • машины идентификатора 3 байта,
  • 2 -байтовый идентификатор процесса и
  • 3-байтовый счетчик, начиная со случайного значения.

Вы можете конвертировать Object {_bsontype: "ObjectID", id: "V16nGÚN± å¿:"} к обычному 24 полукокса шестнадцатеричной строки (5631366e47da4eb120e5bf3a), вызвав .toString функцию. Кроме того, Mongoose документы также имеют .id поглотитель, который возвращает 24 обугленный гекс в виде строкового значения, см этого комментария на Mongoose Github Repository

Смежные вопросы