Как я могу сгенерировать ObjectId с помощью мангуста?

Я хотел бы создать ObjectId MongoDB с помощью Mongoose. Есть ли способ получить доступ к конструктору ObjectId из Mongoose?

  • Этот вопрос о создании нового ObjectId с нуля. Сгенерированный идентификатор - это совершенно новый универсальный идентификатор.

  • Другой вопрос касается создания ObjectId из существующего строкового представления. В этом случае у вас уже есть строковое представление идентификатора - он может быть или не быть универсально уникальным - и вы анализируете его в ObjectId.

Ответ 1

Вы можете найти конструктор ObjectId по require('mongoose').Types. Вот пример:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();

id - это недавно сгенерированный ObjectId.

Вы можете прочитать больше о Types объекта на Mongoose # Типы документации.

Ответ 2

Вы можете создать новый MongoDB ObjectId, как это, используя mongoose:

var mongoose = require('mongoose');
var newId = new mongoose.mongo.ObjectId('56cb91bdc3464f14678934ca');
// or leave the id string blank to generate an id with a new hex identifier
var newId2 = new mongoose.mongo.ObjectId();

Ответ 3

Мне нужно было генерировать идентификаторы mongodb на стороне клиента.

Покопавшись в исходном коде mongodb, я обнаружил, что они генерируют ObjectID, используя npm bson lib.

Если вам когда-либо понадобится только сгенерировать ObjectID без установки всего пакета mongodb/mongoose, вы можете импортировать более bson библиотеку bson:

const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2

Примечание: есть также проект npm с именем bson-objectid который еще легче

Ответ 4

С синтаксисом ES6

import mongoose from "mongoose";

// Generate a new new ObjectId
const newId2 = new mongoose.Types.ObjectId();
// Convert string to ObjectId
const newId = new mongoose.Types.ObjectId('56cb91bdc3464f14678934ca');