有没有什么办法可以像没有mongodb的_idstring一样创buildmongodb?

我非常喜欢mongodb生成的_ids的格式。 主要是因为我可以像客户端的数据一样拉取数据。 我打算使用另一个数据库,但仍然希望这种types的_id为我的文档。 如何在不使用mongodb的情况下创build这些ID?

谢谢!

对象ID通常由客户端生成,所以任何MongoDB驱动程序都有代码来生成它们。

如果您正在寻找JavaScript,下面是MongoDB Node.js驱动程序的一些代码:

https://github.com/mongodb/node-mongodb-native/blob/V0.9.7.4-dev/lib/mongodb/bson/objectid.js

另一个更简单的解决scheme:

https://github.com/justaprogrammer/ObjectId.js

在javascript中一个非常简单的伪ObjectId生成器:

const ObjectId = (m = Math, d = Date, h = 16, s = s => m.floor(s).toString(h)) => s(d.now() / 1000) + ' '.repeat(h).replace(/./g, () => s(m.random() * h)) 

我有一个生成ObjectId的浏览器客户端。 我想确保我在客户端使用与服务器中使用的ObjectIdalgorithm相同的ObjectIdalgorithm。 MongoDB有js-bson可以用来完成这个任务。

如果你正在使用JavaScript与节点。

npm install --save bson

使用require语句

 var ObjectID = require('bson').ObjectID; var id = new ObjectID(); console.log(id.toString()); 

使用ES6导入语句

 import { ObjectID } from 'bson'; const id = new ObjectID(); console.log(id.toString()); 

该库还可以让你导入使用良好的旧脚本标记,但我没有试过这个。

这里有一个详细的说明

http://www.mongodb.org/display/DOCS/Object+IDs

你可以用它来滚动你自己的idstring

ruben-stolk的答案很好,但故意不透明? 分开很容易就是:

 const ObjectId = (rnd = r16 => Math.floor(r16).toString(16)) => rnd(Date.now()/1000) + ' '.repeat(16).replace(/./g, () => rnd(Math.random()*16)); 

(实际上只有less量字符)。 荣誉虽然!