Mongo UUID 类型 03 而不是来自 mongo shell 的 04
Mongo UUID Type 03 instead of 04 from mongo shell
MongoDB UUID 从 Mongo Shell 转换为 TYPE 03,旧格式。我们如何让它与 TYPE 04,二进制格式一起工作?
> 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 代码我们可以使用字节缓冲区并插入为类型 04 二进制 uuid,示例:BinData(4,"XWCwWqIVTfiEkTx9Yl+2UQ==")。
您可以将数据作为类型 4 直接放入 BinData()
函数,方法是提取 base64 编码并提供它:
var t = BinData(4, UUID("240003a09cec456ab57b98ff8e0e45db").base64())
BinData(4,"JAADoJzsRWq1e5j/jg5F2w==")
然后你仍然从十六进制中得到提供的值:
t.hex()
240003a09cec456ab57b98ff8e0e45db
或者直接提供给HexData()
:
HexData(4,"240003a09cec456ab57b98ff8e0e45db")
BinData(4,"JAADoJzsRWq1e5j/jg5F2w==")
如果数据之间有连字符,则使用 .split()
and .join()
重新格式化:
var str = "240003A0-9CEC-456A-b57B-98FF8e0E45DB";
str.split('-').join("").toLowerCase();
"240003a09cec456ab57b98ff8e0e45db"
存在使 UUID()
默认生成类型 4 SERVER-12835 的 JIRA 票证,但这是一个低优先级问题。对于一般用途,您的交互应该基于 "driver"。但是有这些方法可以使用 shell.
MongoDB UUID 从 Mongo Shell 转换为 TYPE 03,旧格式。我们如何让它与 TYPE 04,二进制格式一起工作?
> 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 代码我们可以使用字节缓冲区并插入为类型 04 二进制 uuid,示例:BinData(4,"XWCwWqIVTfiEkTx9Yl+2UQ==")。
您可以将数据作为类型 4 直接放入 BinData()
函数,方法是提取 base64 编码并提供它:
var t = BinData(4, UUID("240003a09cec456ab57b98ff8e0e45db").base64())
BinData(4,"JAADoJzsRWq1e5j/jg5F2w==")
然后你仍然从十六进制中得到提供的值:
t.hex()
240003a09cec456ab57b98ff8e0e45db
或者直接提供给HexData()
:
HexData(4,"240003a09cec456ab57b98ff8e0e45db")
BinData(4,"JAADoJzsRWq1e5j/jg5F2w==")
如果数据之间有连字符,则使用 .split()
and .join()
重新格式化:
var str = "240003A0-9CEC-456A-b57B-98FF8e0E45DB";
str.split('-').join("").toLowerCase();
"240003a09cec456ab57b98ff8e0e45db"
存在使 UUID()
默认生成类型 4 SERVER-12835 的 JIRA 票证,但这是一个低优先级问题。对于一般用途,您的交互应该基于 "driver"。但是有这些方法可以使用 shell.