Necesito tener un playerID de jugador que esté separado de _id y aumente con cada nueva entrada en mi colección de usuarios. He intentado seguir este tutorial sin suerte. Mi colección de contadores se llama playerIDCounter y mi colección de usuarios simplemente se llama users . Quiero que cada documento de usuario tenga un campo playerID de jugador que aumente de 1 en adelante.
Este es mi intento de adaptar el código del tutorial para mi propio propósito:
exports = async function(changeEvent) { const playerID = changeEvent.fullDocument.playerID; const playerIDCounter = context.services.get("Cluster0").db(changeEvent.ns.db).collection("playerIDCounter"); const users = context.services.get("Cluster0").db(changeEvent.ns.db).collection(changeEvent.ns.coll); (db.collection) const counter = await playerIDCounter.findOneAndUpdate({playerID: changeEvent.ns },{$inc: { seq_value: 1 }}, { returnNewDocument: true, upsert : true}); const doc = {}; doc[`${changeEvent.ns.coll}.playerID`] = counter.seq_value; const updateRes = await users.updateOne({playerID: playerID},{ $set: doc}); console.log(`Updated ${JSON.stringify(changeEvent.ns)} with counter ${counter.seq_value} result: ${JSON.stringify(updateRes)}`); } Tampoco sé si ya necesito tener un campo playerID en el documento antes de que se pase a esta función. Si el campo playerID aún no existe, ¿se creará y actualizará automáticamente? Si no, ¿qué valor de marcador de posición debería tener playerID ?
Agradezco a cualquiera que se tome el tiempo para ayudarme. He estado atascado durante unos días y no hay demasiadas publicaciones sobre cómo incrementar los valores en MongoDB.
Editar: tampoco entiendo todo el doc[`${changeEvent.ns.coll}.playerID`] = counter.seq_value bit - ¿qué está pasando aquí?