MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

mongodb agregar $ lookup vs localizar e preencher


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 });