做 mongoose 聚合查询时 _id 字段的奇怪字符

Strange characters for _id field when doing mongoose aggregate query

我正在运行查询以尝试获取重复 ID 记录的计数。

"song" 是一个子文档,它只包含数据库中的一个 _id 字段。在我 运行 查询之后,我在控制台输出中得到了这些奇怪的字符,为什么我无法获得看起来像“555699e4ab3e43ec12accaf9”的实际 ID 字符串?

这些字符是 12 字节的 id binary 字符串。 它实际上是 _id.id_id 对象上的 id 属性 这是一个ObjectID。 您的 24 字节二进制“555..”是 _id 本身,如果您将其用作一个,它会自动转换为字符串。


* 有关如何将对象表示为字符串的更多详细信息:Object.prototype.toString()

对您来说不幸的是,无论您使用什么 IDE 都将其显示为一个对象(实际上就是它的真实面目)。

尝试console.log(util.inspect(results))(一定要require util 模块)


在任何情况下,console.log(result[0]._id) 都会为您提供 24 字节的十六进制字符串“5556...ccaf9”。

如果您不想要 _id 这是一个对象,还有一个 getter id 默认情况下是一个字符串。

console.log(typeof result[0]._id) //=> "object"
console.log(typeof result[0].id) //=> "string"