首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mongo UUID类型为03,而不是mongo shell中的04

Mongo UUID类型为03,而不是mongo shell中的04
EN

Stack Overflow用户
提问于 2017-07-02 07:20:26
回答 1查看 3.5K关注 0票数 3

Mongo Shell的MongoDB UUID转换结果是类型03,遗留格式。我们如何让它与类型04,二进制格式一起工作?

代码语言:javascript
复制
> db.foo.insert({"_id":1000,"key1":UUID("240003A09CEC456AB57B98FF8E0E45DB")})
  WriteResult({ "nInserted" : 1 })
> db.foo.find({_id:1000})
  { "_id" : 1000, "key1" : BinData(3,"JAADoJzsRWq1e5j/jg5F2w==") }
> db.version()
  3.4.2

在Java代码中,我们可以使用bytebuffer并插入为类型04的二进制uuid,示例: BinData(4,"XWCwWqIVTfiEkTx9Yl+2UQ==")。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-02 07:36:31

通过提取base64编码并提供它,您可以将数据作为类型4直接放入BinData()函数:

代码语言:javascript
复制
var t = BinData(4, UUID("240003a09cec456ab57b98ff8e0e45db").base64())
BinData(4,"JAADoJzsRWq1e5j/jg5F2w==")

然后,您仍然可以从十六进制中获得所提供的值:

代码语言:javascript
复制
t.hex()
240003a09cec456ab57b98ff8e0e45db

或者直接提供给HexData()

代码语言:javascript
复制
HexData(4,"240003a09cec456ab57b98ff8e0e45db")
BinData(4,"JAADoJzsRWq1e5j/jg5F2w==")

如果数据之间有连字符,则使用.split().join()重新格式化:

代码语言:javascript
复制
var str =  "240003A0-9CEC-456A-b57B-98FF8e0E45DB";
str.split('-').join("").toLowerCase();
"240003a09cec456ab57b98ff8e0e45db"

JIRA票证的存在是为了让UUID()生成类型4作为默认SERVER-12835,但这是一个低优先级问题。一般情况下,你的交互应该是基于“驱动”的。但是有一些方法可以与shell一起工作。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44866192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档