Wie kann ich mit Mungo eine ObjectId generieren?


132

Ich möchte ObjectIdmit Mongoose eine MongoDB generieren . Gibt es eine Möglichkeit, ObjectIdvon Mongoose aus auf den Konstruktor zuzugreifen ?

  • Bei dieser Frage geht es darum , ein neues ObjectId von Grund auf neu zu generieren . Die generierte ID ist eine brandneue, universell eindeutige ID.

  • Eine andere Frage betrifft das Erstellen einer ObjectIdaus einer vorhandenen Zeichenfolgendarstellung . In diesem Fall haben Sie bereits eine Zeichenfolgendarstellung einer ID - sie kann universell eindeutig sein oder nicht - und Sie analysieren sie in eine ObjectId.

Antworten:


290

Sie finden den ObjectIdKonstruktor auf require('mongoose').Types. Hier ist ein Beispiel:

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

idist eine neu generierte ObjectId.

Weitere Informationen zum TypesObjekt finden Sie in der Dokumentation zu Mongoose # Types .


4
Wie können Sie sicher sein, dass dies wirklich einzigartig ist? Hat Mungo schon mal einen Scheck?
— R01010010

1
@ R01010010 Überprüfen Sie, wie diese generiert werden (Google). Es gibt keine Überprüfung, aber es ist wahrscheinlich
— Dmitry Minkovsky

13
Wenn Sie 16777216 innerhalb einer Sekunde auf demselben Computer generieren, erhalten Sie wahrscheinlich ein Duplikat. :)
— joeytwiddle

Korrektur: Wenn Sie 16777216 innerhalb einer Millisekunde auf demselben Computer generieren, erhalten Sie wahrscheinlich ein Duplikat. 😁
— Ausweichen vor Schatten

43

Sie können eine neue MongoDB ObjectIdwie diese mit Mungo erstellen :

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

13

Ich musste auf Client-Seite Mongodb-IDs generieren.

Nachdem ich mich in den Mongodb-Quellcode vertieft hatte, stellte ich fest, dass sie ObjectIDs mit npm bsonlib generieren .

Wenn Sie jemals nur eine ObjectID generieren müssen, ohne das gesamte mongodb / mongoose-Paket zu installieren, können Sie die leichtere bsonBibliothek importieren :

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

Hinweis: Es gibt auch ein npm-Projekt mit dem Namen bson-objectid"noch leichter"


6

Mit ES6-Syntax

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');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.