Come posso generare un ObjectId con mangusta?


133

Vorrei generare un MongoDB ObjectIdcon Mongoose. C'è un modo per accedere al ObjectIdcostruttore da Mongoose?

  • Questa domanda riguarda la generazione di un nuovo ObjectId da zero. L'ID generato è un nuovissimo ID universalmente unico.

  • Un'altra domanda si pone sulla creazione di un ObjectIdda una rappresentazione di stringa esistente . In questo caso, hai già una rappresentazione in forma di stringa di un ID, che può essere o meno universalmente univoco, e lo stai analizzando in un ObjectId.

Risposte:


291

Puoi trovare il ObjectIdcostruttore su require('mongoose').Types. Ecco un esempio:

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

idè un nuovo generato ObjectId.

Puoi leggere ulteriori informazioni Typessull'oggetto nella documentazione di Mongoose # Tipi .


4
come puoi essere sicuro che questo sia davvero unico? la mangusta fa qualche controllo prima?
R01010010

1
@ R01010010 guarda come vengono generati (Google). Non c'è controllo ma è probabilistico
Dmitry Minkovsky

13
Se generi 16777216 entro un secondo sulla stessa macchina, probabilmente otterrai un duplicato. :)
joeytwiddle,

Correzione: se si genera 16777216 entro un millisecondo sulla stessa macchina, probabilmente si otterrà un duplicato. 😁
Shadows l'

43

Puoi creare un nuovo MongoDB ObjectIdcome questo usando 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();

14

Avevo bisogno di generare ID mongodb sul lato client.

Dopo aver scavato nel codice sorgente di mongodb ho scoperto che generano ObjectID usando npm bsonlib.

Se mai hai solo bisogno di generare un ObjectID senza installare l'intero pacchetto mongodb / mongoose, puoi importare la bsonlibreria più leggera :

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

Nota: esiste anche un progetto npm chiamato bson-objectidancora più leggero


6

Con sintassi 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');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.