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

Mongoose, MongoDB:Jak uložit() dokument po push()?

Myslím, že záleží na tom, jak často budou komentáře přidávány k vašemu příspěvku

Pokud je to velmi časté, možná budete chtít získat nejnovější počet komentářů, který by byl ve vašem zpětném volání pro uložení takto:

myPost.comments.push({user: 42, text: 'blablabla'});
myPost.save(function (err, post) {
    newCount = post.comments.length
});

Pamatujte, že push() je v Mongoose atomická. Jinými slovy používá $push pod kapotou a ne $set (na rozdíl od nonAtomicPush ). Teoreticky tedy může souběžně proběhnout libovolný počet dalších vložení/uložení do komentářů, což znamená, že ve vašem daném příkladu nemusí být comments.length nutně n+1

Pokud nečekáte mnoho komentářů, pak by měl stačit váš příklad. Čas od času to může být méně přesné. Výhodou je, že to bude o něco rychlejší, protože načítání bude synchronní




  1. problém s výkonem na Spring Data Mongodb

  2. Úvod do Spring Data MongoDB

  3. Ruby - mutex založený na Redis s implementací expirace

  4. Chyba při vkládání dokumentu do sdílené kolekce MongoDB vytvořené pomocí CLI