选择对象时ObjectId会发生变化吗?

时间:2015-11-30 20:31:35

标签: node.js mongodb mongoose

我在mongo中创建了一个具有customerId属性的对象:

ObjectId("5631366e47da4eb120e5bf3a")

但是,我注意到使用该对象的子选择ID无法正常工作,当查询我的object.customerId时,我得到:

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

哪个不匹配。选择时为什么我的对象ID不同?

1 个答案:

答案 0 :(得分:0)

您的查询返回原始ObjectID。根据{{​​3}},这是一个12字节的BSON类型,使用:

构造
  • 一个4字节的值,表示自Unix纪元以来的秒数,
  • 一个3字节的机器标识符,
  • 一个2字节的进程ID,
  • 一个3字节的计数器,以随机值开始。

您可以通过调用Object {_bsontype: "ObjectID", id: "V16nGÚN± å¿:"}函数将.toString转换为通常的24个字符十六进制字符串(5631366e47da4eb120e5bf3a)。或者,Mongoose文档还有一个.id getter,它将24个字符的十六进制作为字符串值返回,请参阅documentation上的此注释