Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB是否仅使用中间件插入UUID?_Node.js_Mongodb_Buffer_Uuid - Fatal编程技术网

Node.js MongoDB是否仅使用中间件插入UUID?

Node.js MongoDB是否仅使用中间件插入UUID?,node.js,mongodb,buffer,uuid,Node.js,Mongodb,Buffer,Uuid,我不知道如何将UUID正确插入MongoDB。 例如: db.users.insert({ uuid: UUID(buffer) }) 缓冲区必须是32个十六进制字符串,MongoDB本机不创建UUID,只存储这个?我是对的?但是在我创建随机UUID的地方,例如通过Node.js中间件,我有一个随机UUID11986aba-7c5a-4626-b354-80be23c25516,所以它是一个36长度的字符串,现在我无法将它放入UUID(缓冲区)。我应该如何处理node.js UUID模块生成的

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

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

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

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

从node.js,使用
节点uuid
模块,您可以轻松生成或uuid并将其存储在缓冲区对象中:

从Mongo Shell返回该值,如下所示:

> db.test.find()
{ "_id" : ObjectId("557b2a390c59394b35236dc9"), "uuid" : BinData(4,"ke3D8CA2S/OUDNPWsKneAw==") }
请注意,Mongo Shell函数将生成类型3
子类型UUID\u OLD
二进制:

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

谢谢,实际上我解决了我的问题。我认为删除连字符这个函数会更好
uuid.v4(null,newbuffer(16))/=>
,这将新生成的uuid返回到二进制数据,这很重要,因为MongoDB有一个本机函数
uuid(32byteHex)
,它将这个值从缓冲区转换为MongoDB bin数据。存储UUID作为二进制值提供了比字符串更好的性能。当然,但我在这里没有投票的名声:(@user3075373我已经用您提供的信息编辑了我的答案。现在更好了吗?是的!实际上我认为这是在MongoDB中存储UUID的最好方法。:)
> db.test.find()
{ "_id" : ObjectId("557b2a390c59394b35236dc9"), "uuid" : BinData(4,"ke3D8CA2S/OUDNPWsKneAw==") }
> db.test.insert({uuid:UUID('09352d90756741879c25e108d83290a2')})
{ "_id" : ObjectId("557b2acc0c59394b35236dcb"), "uuid" : BinData(4,"ke3D8CA2S/OUDNPWsKneAw==") }
{ "_id" : ObjectId("557b2b7984ee2ba0375f4fc9"), "uuid" : BinData(3,"CTUtkHVnQYecJeEI2DKQog==") }
//                                                               ^