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.