sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man förhindrar att flera dokument läggs till i mongodb-databasen

Problemet ligger någonstans i mongoos kompatibilitet med trängsel.

Den startar en ny "connect"-händelse för varje "tråd" och du tar bort dokumentet på connect https://gist.github.com/wootwoot1234/49cb7d082850d93f8cd03da164644cfb#file-index-js-L100 :

db.once('open', async function() {
  await Message.deleteOne(messageQuery); // <=== remove it from here to fix the problem
  throng({
    worker: start,
    count: 50,
    lifetime: Infinity
  });
});

Det måste bero på hur myllret isolerar globala variabler mellan trådar, i synnerhet anslutningspool. Som standard är mongoose-anslutningspoolen 5, vilket betyder att det inte finns fler än 5 anslutningar till databasen åt gången. Drivrutinen håller dem öppna och återanvänder för att spara på anslutningskostnaden.

Om du kontrollerar Atlas-anslutningsövervakning kommer du att se ytterligare 100 anslutningar när du kör det här skriptet.




  1. Installera plugins för mongoose - får fel

  2. MongoDB-prestandaproblem:En stor samling vs flera små samlingar

  3. MongoDB:Hur returnerar man slumpmässiga element utan Linq? (MongoDB, C#)

  4. Express/Node.js-fel:Referensfel:Res är inte definierat