如何在Mongo服务器端javascript中使用Binary或UUID类型?

问题描述

我将二进制UUID存储在mongoDB中,并将它们用作索引。这要好用,这要感谢我从node.js使用的mongo-uuid

但是,我现在尝试在其他上下文中使用这些UUID,即在我作为mapReduce函数运行的服务器端脚本中。基本上,我在每个文档中搜索类似UUID的代码以形成对象之间的关联链接。这段代码很好用,但是在处理二进制UUID字段时遇到了问题。

我发现我可以通过执行以下操作将十六进制代码转换为UUID

var uuid = UUID(<hex string>)

但是没有从二进制对象到十六进制代码的逆函数。看来,在Mongo框架内,无法访问Binary.value(),并且UUID()对象没有字符串化调用。

我发现的最佳解决方法是:

   var uuid = UUID(); // Some BSON UUID instance
   var uuid_str = uuid.toString()  // Resolves to "UUID(\"abcdabcd-...-12345678\")"
                      .substring(6,32); // Take out the hex code

但是,这使我感到紧张,因为它有点破烂-有没有更强大的方法?

此外,导出包含二进制UUID的Mongo文档时有时会出现问题。为了解决这个问题,我开始只在键字段中使用二进制UUID,并使用字符串UUID来引用其他文档。

谁能进一步阐明如何在服务器端javascript中操纵BSON二进制类,或如何更改节点中BSON类型的默认toString行为?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...