MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verhindern Sie, dass mehrere Dokumente zur Mongodb-Datenbank hinzugefügt werden

Das Problem liegt irgendwo in der Mongoose-Kompatibilität mit throng.

Es löst ein neues „connect“-Ereignis für jeden „Thread“ aus und Sie löschen das Dokument beim Verbinden 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
  });
});

Es muss an der Art und Weise liegen, wie throng globale Variablen zwischen Threads isoliert, insbesondere den Verbindungspool. Standardmäßig ist der Mongoose-Verbindungspool 5, was bedeutet, dass nicht mehr als 5 Verbindungen zur Datenbank gleichzeitig bestehen. Der Treiber hält sie offen und verwendet sie wieder, um Verbindungskosten zu sparen.

Wenn Sie die Atlas-Verbindungsüberwachung aktivieren, sehen Sie einige zusätzliche 100 Verbindungen, wenn Sie dieses Skript ausführen.