乐闻世界logo
搜索文章和话题

How do I update/upsert a document in Mongoose?

1个答案

1

In Mongoose, updating a document (commonly referred to as a document in MongoDB) can be achieved through several different methods. If you refer to the document as the one to be updated, I will demonstrate several common methods for updating documents in Mongoose, along with examples.

Using save() Method to Update Documents

If you have already queried a Mongoose document instance, you can directly modify its properties and then call the .save() method to update it.

javascript
const mongoose = require('mongoose'); const { Schema } = mongoose; const UserSchema = new Schema({ name: String, age: Number }); const User = mongoose.model('User', UserSchema); async function updateUser(userId) { try { // Query the document const user = await User.findById(userId); if (user) { // Modify the document's properties user.name = 'New Name'; user.age = 30; // Save the document await user.save(); console.log('Document updated successfully'); } else { console.log('Document not found'); } } catch (error) { console.error('Error updating document:', error); } }

Using updateOne() or updateMany() Methods

If you do not need to retrieve the entire document first, you can directly use updateOne() or updateMany() to update one or multiple documents.

javascript
async function updateUserName(userId, newName) { try { // Update a single document const result = await User.updateOne({ _id: userId }, { $set: { name: newName } }); if (result.matchedCount === 1) { console.log('Document updated successfully'); } else { console.log('No documents matched the query. Document not updated'); } } catch (error) { console.error('Error updating document:', error); } }

Using findOneAndUpdate() Method

If you want to retrieve the updated document along with updating it, you can use the findOneAndUpdate() method.

javascript
async function findAndUpdateUser(userId, newName) { try { const options = { new: true }; // Return the updated document const updatedUser = await User.findOneAndUpdate({ _id: userId }, { $set: { name: newName } }, options); if (updatedUser) { console.log('Document updated and retrieved successfully:', updatedUser); } else { console.log('Document not found'); } } catch (error) { console.error('Error finding and updating document:', error); } }

In these examples, we use MongoDB's update operators like $set to specify the fields we want to update. You can also use other update operators for more complex updates. Depending on your needs, you can choose the most suitable update strategy.

Note: Ensure to follow best practices when performing update operations, such as validating inputs and handling errors.

2024年6月29日 12:07 回复

你的答案