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)