Loading

Quipoin Menu

Learn • Practice • Grow

node-js / CRUD Operations with MongoDB
interview

Q1. How do you create (insert) documents in MongoDB?
With MongoDB driver:
const result = await db.collection('users').insertOne({ name: 'John', age: 30 });
For multiple: insertMany([...]). With Mongoose:
const user = new User({ name: 'John' }); await user.save();
or
User.create({ name: 'John' });
. The inserted document includes an _id field automatically.

Q2. How do you read (query) documents?
With MongoDB driver:
const users = await db.collection('users').find({ age: { $gt: 18 } }).toArray();
For single: findOne({ _id: ObjectId(id) }). With Mongoose:
const users = await User.find({ age: { $gt: 18 } }); const user = await User.findById(id);
. Queries support filtering, projection, sorting, and pagination.

Q3. How do you update documents?
With MongoDB driver:
await db.collection('users').updateOne({ _id: id }, { $set: { age: 31 } });
For multiple: updateMany(). With Mongoose:
await User.updateOne({ _id: id }, { $set: { age: 31 } });
or find and update:
await User.findByIdAndUpdate(id, { age: 31 }, { new: true });
. The $set operator updates specific fields.

Q4. How do you delete documents?
With MongoDB driver:
await db.collection('users').deleteOne({ _id: id });
or deleteMany(). With Mongoose:
await User.deleteOne({ _id: id });
or
await User.findByIdAndDelete(id);
. Be careful with delete operations as they are irreversible. Consider soft deletes by adding a deleted flag instead.

Q5. How do you handle errors in CRUD operations?
Use try/catch blocks. Common errors: duplicate key (E11000), validation errors, cast errors (invalid ObjectId), connection errors. Example:
try { await user.save(); } catch (err) { if (err.code === 11000) { // duplicate key } else { // handle other errors } }
. Always send appropriate HTTP status codes.