如何在mongodb集合中为_id字段生成字符串值?

时间:2017-09-11 09:08:54

标签: ruby-on-rails mongodb meteor mongoid

我想生成新创建的对象的id作为字符串而不是BSON :: ObjectId(' 59afe79b92caf8948b000005')。

我正在使用mongoid版本的mongoid(4.0.2)。

是否有类似此页面{id {3}}的idGeneration。

我想创建id作为随机字符串(SWpabpucouNBRJZoh),以便它可以与我们的meteor应用程序一起使用。

任何建议对我都有帮助。

谢谢,

2 个答案:

答案 0 :(得分:0)

如果您在最后生成并在插入查询中指定了_id字段,则mongo将接受您的_id。但是如果你没有用名称_id指定任何字段,那么mongoDB会非常智能地创建一个_id字段,该字段是用一些算法生成的,可以在将来用于排序目的。

这里是mongoDB如何生成对象ID的信息。 Click Here

你可以自己生成一个大约17个字符的_id(取决于你需要多长时间)。但在插入之前确保它不存在。 MongoDB索引由字段_id标识的密钥。您可以click here了解更多如何生成所需密钥的方法。获取提示并开发自己的代码。

答案 1 :(得分:0)

正如Ankur Soni指出的那样,在没有_id属性的MongoDB中插入项目将导致Mongo创建自己的项目。如果你想创建自己的id,你可以使用类似GUID生成器的东西(如下所示:Create GUID / UUID in JavaScript?)来实现这个诀窍:

function guid() {
  return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
    s4() + '-' + s4() + s4() + s4();
}

function s4() {
  return Math.floor((1 + Math.random()) * 0x10000)
    .toString(16)
    .substring(1);
}