Bem, não há como o
$lookup
seria mais rápido do que ter a lista de IDs de comentários no objeto de vídeo real. Quero dizer, você tem que fazer um whole other request
para mongo para obtê-los agora. Portanto, em termos de desempenho, obviamente, a pesquisa adicionaria tempo. Isso supondo que você não esteja usando mongoose populate
para "converter" esses ids de comentários nos objetos referenciados. Se você estiver removendo os comentários do vídeo (assim como o prop de contagem real) e fazer a pesquisa é o caminho a seguir. Como você está combinando imediatamente em seu argumento e, em seguida, fazendo uma simples
lookup
Não vejo como isso seria um gargalo para você. Além disso, você pode otimizar/alterar/ajustar sua agregação vie explain
etc. Seu esquema de vídeo seria bem limpo dessa maneira:
const VideoSchema = new mongoose.Schema({
caption: {
type: String,
trim: true,
maxlength: 512,
required: true,
},
owner: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: true,
},
// some more fields
}, { timestamps: true });