做 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"
我正在运行查询以尝试获取重复 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"