Virtual
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
  firstName: String,
  lastName: String,
});
// Define a virtual for the user's full name
userSchema.virtual('fullName').get(function() {
  return ${this.firstName} ${this.lastName};
});
const User = mongoose.model('User', userSchema);
// Usage
const user = new User({ firstName: 'John', lastName: 'Doe' });
console.log(user.fullName); // Output: "John Doe"
Population
const postSchema = new Schema({
  title: String,
  content: String,
  author: { type: Schema.Types.ObjectId, ref: 'User' }
});
const Post = mongoose.model('Post', postSchema);
// Populate author when querying posts
Post.find()
  .populate('author') // Fetches associated User document
  .exec((err, posts) => {
    console.log(posts);
  });
indexing
const productSchema = new Schema({
  name: String,
  price: Number,
  category: String
});
// Create an index on the category field
productSchema.index({ category: 1 });
const Product = mongoose.model('Product', productSchema);
// Now, queries on category will be faster
Product.find({ category: 'Electronics' }, (err, products) => {
  console.log(products);
});
    
Top comments (0)