Estoy enviando un nuevo elemento a la base de datos y dentro de esos datos hay una matriz con alguna identificación. Estoy usando node y expressJs . Entonces, la idea es si existe un objeto, quiero actualizar la matriz dentro del objeto. O el objeto se creará en mongodb.
El problema es: en el primer envío, se agrega a la base de datos con una matriz. Pero en otros clics, la matriz se reemplazó con una nueva identificación.
app.put("/destination", async (req, res) => { const email = req.query.email; const query = { email: email }; let result; if (query) { const cursor = userCarCollection.find(query); const userNewIds = req.body; result = await collection.updateOne( query, { $set: userNewIds }, { upsert: true } ); } else { result = await carCollection.insertOne(userNewCar); } res.send(result); });Encontré la solución chicos. Perdón por cualquier inconveniente. Tuve que usar el método $push , no el método $set . Como soy un principiante, no podría pensar de esa manera. Mi solución es la siguiente y funciona perfectamente:
if (query) { const cursor = userCarCollection.find(query); const userNewIds = req.body.productId.toString(); result = await userCarCollection.updateOne( query, { $push: { productId: userNewIds, }, }, { upsert: true } ); }