通过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',
...
}
我正在试图弄清楚如何将id
的{{1}}值转换回'Vnñ\'#¸#úP\u0003þ'
的24个十六进制字符,以便我可以通过它查询数据库(作为查询)用'vnñ\'#¸#úP\u0003þ'显然不起作用。
后面的调用包括从集合返回的光标上调用"566ef12723b89d23fa5003fe"
,我猜这部分反序列化了ObjectId实例。
** **编辑
我在接受来自toArray
的结果的函数中输入了一个日志语句,其中显示了:
toArray
我看到的乱码来自两个地方。一个在节点调试repl:
{ _id : 566ef12723b89d23fa5003fe,
address: "30 Pair Road",
...
}
然后当我把它串行化时。我现在在_id字段上显式调用> users[0]
{ _id: { _bsontype: 'ObjectID', id: 'Vnñ\'#¸#úP\u0003þ' ... }
> users[0]._id.toString()
'567b1a7d818d826f1dab9c6f'
> users[0]._id.id.toString()
'Vnñ\'#¸#úP\u0003þ'
并且它的行为正确。