在通过 mongo CLI(v3.0.7)查询MongoDb数据库时,将返回文档及其ObjectId,如下所示:

{ "_id" : ObjectId("566ef12723b89d23fa5003fe"),
  "address": "30 Pair Road",
  ...
}

但是使用Node MongoDb库(mongodb@2.0.52,mongodb-core @ 1.2.28)执行类似的搜索会返回:

{ _id: { _bsontype: 'ObjectID', id: 'Vnñ\'#¸#úP\u0003þ' },
  address: '30 Pair Road',
  ...
}

我正在试图找出如何将 'Vnñ\'#¸#úP\u0003þ'id 值转换回 "566ef12723b89d23fa5003fe" 的24个十六进制字符,以便我可以通过它查询数据库(查询'Vnñ'#¸#úP\u0003þ' obviously doesn' t work) .

后面的调用包括从集合返回的光标上调用 toArray ,我猜这是部分反序列化ObjectId实例 .

edit

我在接受 toArray 结果的函数中输入了一个日志语句,其中显示:

{ _id : 566ef12723b89d23fa5003fe,
  address: "30 Pair Road",
  ...
}

我看到的乱码来自两个地方 . 一个在节点调试repl中:

> users[0]
{ _id: { _bsontype: 'ObjectID', id: 'Vnñ\'#¸#úP\u0003þ' ... }
> users[0]._id.toString()
'567b1a7d818d826f1dab9c6f'
> users[0]._id.id.toString()
'Vnñ\'#¸#úP\u0003þ'

然后在我连续编辑时 . 我现在在_id字段上显式调用 toString 并且它的行为正确 .