Mongoose로 ObjectId를 생성하려면 어떻게해야합니까?


133

ObjectIdMongoose 로 MongoDB를 생성하고 싶습니다 . ObjectIdMongoose 에서 생성자 에 액세스하는 방법이 있습니까?

  • 이 질문은 처음부터 새로 생성하는 것에 관한 것 ObjectId입니다. 생성 된 ID는 완전히 새로운 범용 고유 ID입니다.

  • 또 다른 질문은 기존 문자열 표현ObjectId 에서 를 만드는 것에 대해 묻습니다 . 이 경우 이미 ID의 문자열 표현이 있고 (유니버설 일 수도 있고 아닐 수도 있음) ID를 .ObjectId

답변:


291

에서 ObjectId생성자를 찾을 수 있습니다 require('mongoose').Types. 예를 들면 다음과 같습니다.

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

id새로 생성 된 ObjectId.

Mongoose # Types 문서Types 에서 객체에 대한 자세한 내용을 읽을 수 있습니다 .


4
이것이 정말 독특하다는 것을 어떻게 확신 할 수 있습니까? 몽구스는 전에 어떤 수표를 했습니까?
R01010010

1
@ R01010010이 어떻게 생성되는지 확인하세요 (Google). 수표는 없지만 확률 적입니다
Dmitry

13
동일한 시스템에서 1 초 내에 16777216을 생성하면 중복이 발생할 수 있습니다. :)
joeytwiddle

수정 : 동일한 시스템에서 1 밀리 초 내에 16777216을 생성하면 중복이 발생할 수 있습니다. 😁
그림자 회피

43

ObjectIdmongoose를 사용하여 다음과 같이 새 MongoDB를 만들 수 있습니다 .

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();

14

클라이언트 측에서 mongodb ID를 생성해야했습니다.

mongodb 소스 코드를 파헤친 후 npm bsonlib를 사용하여 ObjectID를 생성하는 것을 발견했습니다 .

mongodb / mongoose 패키지 전체를 설치하지 않고 ObjectID 만 생성하면되는 경우 더 가벼운 bson라이브러리를 가져올 수 있습니다 .

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

참고 : bson-objectid더 가벼운 npm 프로젝트도 있습니다.


6

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');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.