Estoy creando un documento con mangosta y no puedo encontrar una forma de crear ID únicos para algunos elementos del documento.
Para un ejemplo:
Document { _id: ObjectId(...), title: "Post Title", comments: [ { NEEDED_ID: 1, value: "abc"},{ NEEDED_ID: 2, value: "abc"} ], input: { isInput: true, NEEDED_ID: 3, } }Espero que puedas ayudarme con eso.
si necesita una identificación que aumente automáticamente, verifique el incremento automático en mongoDB: https://www.mongodb.com/basics/mongodb-auto-increment
ejemplo de los documentos de mongoDB anteriores con Atlas:
// create collections db.createCollection("students"); db.createCollection("counters"); // create trigger exports = async function(changeEvent) { var docId = changeEvent.fullDocument._id; const countercollection = context.services.get("<ATLAS-CLUSTER>").db(changeEvent.ns.db).collection("counters"); const studentcollection = context.services.get("<ATLAS-CLUSTER>").db(changeEvent.ns.db).collection(changeEvent.ns.coll); var counter = await countercollection.findOneAndUpdate({_id: changeEvent.ns },{ $inc: { seq_value: 1 }}, { returnNewDocument: true, upsert : true}); var updateRes = await studentcollection.updateOne({_id : docId},{ $set : {studentId : counter.seq_value}}); console.log(`Updated ${JSON.stringify(changeEvent.ns)} with counter ${counter.seq_value} result : ${JSON.stringify(updateRes)}`); }; // Replace <ATLAS-CLUSTER> with your cluster service name. db.students.insert({ "name":"Jhon Doe" }); db.students.insert({ "name":"David Smith" }); db.students.insert({ "name":"Amanda Herny" }); // get students from atlas db.students.find().pretty(); si necesita crear una identificación aleatoria en el nodo, puede usar el paquete crypto .
Opción 1:
const crypto = require("crypto"); // create id const _id = crypto.randomBytes(16).toString("hex"); // '4a82db25ba403269c009db0129a032f3'Opcion 2:
const { randomUUID } = require("crypto"); const uuid = randomUUID() // 'e92b8088-7fd2-40fd-ad87-2c16cbedfc94' EDITAR: con respecto a su comentario, randomUUID() definitivamente genera una identificación única cada vez. Vuelva a verificar su implementación si no funciona para usted. Puede probar la generación de uuid en un script de demostración como este:
const { randomUUID } = require("crypto"); numberOfIds = 5; // generate five unique id's for (let i = 0; i < numberOfIds; i++) { const uuid = randomUUID(); console.log(uuid); // prints 5 id's // f0151ff5-2656-400f-b4e6-c5549324f8f9 // a8223ae3-6259-4114-951b-8c12c3d932bf // 3a0404fd-6f5a-40d3-9726-c549f6d62ab4 // 35178ac4-62d5-4654-938e-0ffac378751a // 458bf08f-07d2-4849-bf67-6f328ff93109 }