Есть ли способ создать mongodb как строки _id без mongodb?
Мне очень нравится формат _ids, сгенерированный mongodb. В основном потому, что я могу вытащить данные, подобные дате, из них на стороне клиента. Я планирую использовать другую базу данных, но все же хочу использовать этот тип _id для моего документа. Как создать эти идентификаторы без использования mongodb?
Спасибо!
Ответы
Ответ 1
Идентификаторы объектов обычно генерируются клиентом, поэтому любой драйвер MongoDB будет иметь код для их генерации.
Если вы ищете JavaScript, вот какой-то код из драйвера MongoDB Node.js:
https://github.com/mongodb/node-mongodb-native/blob/V0.9.7.4-dev/lib/mongodb/bson/objectid.js
И другое, более простое решение:
https://github.com/justaprogrammer/ObjectId.js
Ответ 2
Очень простой псевдоинструктор ObjectId в javascript:
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))
Ответ 3
У меня есть клиентский браузер, который генерирует ObjectId
s. Я хотел убедиться, что я использую тот же алгоритм ObjectId
в клиенте, что и тот, который используется на сервере. MongoDB имеет js-bson, который может быть использован для этого.
Если вы используете javascript с node.
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());
Библиотека также позволяет импортировать старые добрые теги script, но я этого не пробовал.
Ответ 4
ruben-stolk ответ велик, но намеренно непрозрачен? Очень немного легче выделить:
const ObjectId = (rnd = r16 => Math.floor(r16).toString(16)) =>
rnd(Date.now()/1000) + ' '.repeat(16).replace(/./g, () => rnd(Math.random()*16));
(фактически немного меньше символов). Кудос, хотя!
Ответ 5
Здесь есть подробная спецификация
http://www.mongodb.org/display/DOCS/Object+IDs
Что вы можете использовать, чтобы катить свои собственные строки id