DEV Community

Erasmus Kotoka
Erasmus Kotoka

Posted on

Codes on

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)