sql >> Databáze >  >> NoSQL >> MongoDB

mongodb agregovat $lookup vs najít a naplnit

Neexistuje žádný způsob, jak $lookup by bylo rychlejší než mít seznam ID komentářů na skutečném objektu videa. Chci říct, že musíte udělat whole other request mongo, abych je dostal hned. Takže z hlediska výkonu by vyhledávání samozřejmě přidalo čas. To za předpokladu, že nepoužíváte mongoose populate "převést" tato ID komentářů na odkazované objekty.

Pokud poté odstraníte komentáře z videa (stejně jako skutečný počet rekvizit) a provedete vyhledávání, je to správná cesta. Vzhledem k tomu, že se ihned shodujete ve svém argumentu a poté provedete jednoduché lookup Nechápu, jak by to pro vás mohlo být překážkou. Svou agregaci můžete také optimalizovat/změnit/vyladit pomocí vysvětlení atd.

Vaše schéma videa by tak bylo docela čisté:

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



  1. MongoDB $pop

  2. selhání importu pymongo ubuntu

  3. Jak používat Memcached s rámcem Yii2

  4. MongoDB a Mongoose přistupují k jedné databázi při ověřování proti jiné (NodeJS, Mongoose)