gpt4 book ai didi

node.js - MongoDB 仅使用中间件插入 UUID?

转载 作者:可可西里 更新时间:2023-11-01 09:57:54 28 4
gpt4 key购买 nike

我不知道如何正确地将 UUID 插入 MongoDB。
例如:

db.users.insert({ uuid: UUID(buffer) })

缓冲区必须是 32 位十六进制字符串,MongoDB 本身不创建 UUID,只存储这个?我是对的?但是在我创建随机 UUID 的地方,例如通过 Node.js 中间件,我有一个随机 UUID 11986aba-7c5a-4626-b354-80be23c25516,所以它是一个 36 长度的字符串,现在我不能将它放入 UUID(缓冲区)。我应该如何处理从 node.js uuid 模块生成的这个 UUID?以及后来如何从 MongoDB 中读取这个插入的值作为普通的 uuid 字符串?

最佳答案

BSON,因此 MongoDB 支持 UUID类型。在 Mongo Shell 中,您可以使用 UUID() 构造函数将 32 位十六进制数字字符串转换为 UUID 内部表示形式。

从 node.js,使用 node-uuid 模块,您可以轻松生成 v1v4 UUID 并将它们存储在缓冲区 对象中:

> my_uuid = uuid.v4(null, new Buffer(16))
<Buffer 91 ed c3 f0 20 36 4b f3 94 0c d3 d6 b0 a9 de 03>

然后您可以将其转换为类型 4 二进制 SUBTYPE_UUID(或已弃用的类型 3 SUBTYPE_UUID_OLD):

> collection.insert({uuid: mongodb.Binary(my_uuid, mongodb.Binary.SUBTYPE_UUID)},
function(err, result) { /* ... */ })

从 Mongo Shell,您可以返回该值:

> db.test.find()
{ "_id" : ObjectId("557b2a390c59394b35236dc9"), "uuid" : BinData(4,"ke3D8CA2S/OUDNPWsKneAw==") }

请注意,Mongo Shell UUID()函数将生成类型 3 SUBTYPE_UUID_OLD 二进制文件:

> db.test.insert({uuid:UUID('09352d90756741879c25e108d83290a2')})
{ "_id" : ObjectId("557b2acc0c59394b35236dcb"), "uuid" : BinData(4,"ke3D8CA2S/OUDNPWsKneAw==") }
{ "_id" : ObjectId("557b2b7984ee2ba0375f4fc9"), "uuid" : BinData(3,"CTUtkHVnQYecJeEI2DKQog==") }
// ^

关于node.js - MongoDB 仅使用中间件插入 UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30801945/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com