当前位置:  开发笔记 > 编程语言 > 正文

在MongoDB中创建简短,唯一的对象ID

如何解决《在MongoDB中创建简短,唯一的对象ID》经验,为你挑选了3个好方法。

我正在使用Rails/Mongoid创建一个类似于instagram的应用程序.我想要一个可以在http://instagr.am/p/DJmU8/等网址中使用的唯一ID

最简单的方法是什么?我可以从Mongo创建的默认BSON ObjectID中获取这样的ID吗?



1> aav..:

您可以尝试使用ObjectID的前4个字节(它们将代表时间戳).

但是,为了100%安全,最好通过实施一个计数器来产生真正独特的短ID.您可以使用单独的集合来维护计数器的当前值.

有关mongo的ObjectID结构的更多详细信息,请访问:http://www.mongodb.org/display/DOCS/Object+IDs

作为替代方案,您可以将转换十六进制字符串id表示转换为基于36个符号(26个拉丁字母+10个数字)的表示.它显然会更短.

看来,有一个ruby库,可以进行这样的转换http://rubyworks.github.com/radix/



2> stef..:

你可以尝试Mongoid :: Token

https://github.com/thetron/mongoid_token

来自文档:

在您不能或不想使用slug或默认MongoDB ID的情况下,此库是为您的mongoid文档生成唯一的随机令牌的快速而简单的方法.

Mongoid :: Token可以帮助解决这个问题:

http://myawesomewebapp.com/video/4dcfbb3c6a4f1d4c4a000012/edit

进入更像这样的事情:

http://myawesomewebapp.com/video/83xQ3r/edit



3> user2276686..:

为什么不使用dylang / shortid?

使用npm npmjs.com/package/shortid安装:

npm i shortid

然后要求:

const shortid = require('shortid');

在猫鼬模式中:

npm i shortid

或直接插入:

    users.insert({
        _id: shortid.generate()
        name: ...
        email: ...
        });

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有