有没有什么办法可以像没有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:
在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
的浏览器客户端。 我想确保我在客户端使用与服务器中使用的ObjectId
algorithm相同的ObjectId
algorithm。 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());
该库还可以让你导入使用良好的旧脚本标记,但我没有试过这个。
ruben-stolk的答案很好,但故意不透明? 分开很容易就是:
const ObjectId = (rnd = r16 => Math.floor(r16).toString(16)) => rnd(Date.now()/1000) + ' '.repeat(16).replace(/./g, () => rnd(Math.random()*16));
(实际上只有less量字符)。 荣誉虽然!