在通过 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
并且它的行为正确 .