sql >> Databasteknik >  >> NoSQL >> MongoDB

Är att flytta dokument mellan samlingar ett bra sätt att representera tillståndsförändringar i MongoDB?

Ja detta är designat. MongoDB tillhandahåller uttryckligen inte anslutningar eller transaktioner. Ta bort + Spara är en form av transaktion.

Du har verkligen två lågkomplexitetsalternativ här, båda involverar findAndModify .

Alternativ #1:en enda samling

Baserat på din beskrivning bygger du i princip en kö med några extra funktioner. Om du använder en enda samling använder du findAndModify för att uppdatera statusen för varje objekt när det bearbetas.

Tyvärr betyder det att du kommer att förlora detta:...att den "inkommande" samlingen kan hållas väldigt liten och snabb på detta sätt .

Alternativ 2:två samlingar

Det andra alternativet är i princip en tvåfasig commit, som utnyttjar findAndModify .

Ta en titt på dokumenten för detta här .

När ett objekt har bearbetats i A du ställer in ett fält för att flagga det för radering. Du kopierar sedan objektet till B . En gång kopierad till B du kan sedan ta bort objektet från A .



  1. Hur använder man redis PUBLISH/SUBSCRIBE med nodejs för att meddela klienter när datavärden ändras?

  2. Hur konfigurerar jag JedisConnectionFactory att använda SSL så att jag inte får felet:JedisDataException:ERR okrypterad anslutning är förbjuden?

  3. mongodb:hur kan jag se exekveringstiden för det samlade kommandot?

  4. Hur kan jag lagra bilder i mongodb med node.js?