سلام و وقت بخیر
در MongoDB یک کالکشن برای کاربران و یک کالکشن هم برای پست ها وجود داره.
از aggregation استفاده کردم و آخرین پست هر کاربر رو ( با limit = 20 ) دریافت کردم. اما این کوئری همینطوری که تعداد پست ها افزایش پیدا میکنن، سرعت اجراش کم و کمتر میشه. خیلی وقته درگیر این موضوع هستم و نمیدونم باید چیکار کنم. هیچ جا هم جواب مناسبی دریافت نکردم.
در ادامه، Schema فعلی دو مدل رو قرار میدم.
Schema مربوط به users
const mongoose = require("mongoose");
const UserSchema= new mongoose.Schema({
username: {
type: String,
minLength: 4,
maxLength: 20,
trim: true,
lowercase: true,
required: true,
},
firstName: {
type: String,
trim: true,
lowercase: true,
},
lastName: {
type: String,
trim: true,
lowercase: true,
},
created_at: {
type: Date,
default: Date.now,
},
});
و Schema مربوط به posts
const PostsSchema = new mongoose.Schema({
title: {
type: String,
required: true,
trim: true,
minlength: 5,
maxlength: 255,
},
body: {
type: String,
required: true,
},
user: {
type: String,
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
created_at: {
type: Date,
default: Date.now,
},
});
لطفاً اگه ممکنه، راهنمایی کنید که چطور میتونم به اون کوئری مورد نظر برسم؟
با سلام . شما چرا از دوتا type برای یوزر در پست ها استفاده کردید! اونی که استرینگ نوشتیدو پاک کنید.چون برای رابطه حتما باید ObjectId باشه.
مورد بعدی اینکه خوب شما میتونید از find به راحتی استفاده کنید .
برای افزایش سرعت اگر میخواید از مونگوز استفاده کنید از lean اسفاده کنید . و راه دیگش که سرعت دوبرابر میتونید داشته باشید استفاده از خود مونگو دی بی توی این کوئریتون به جای مونگوزه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟