sql >> Database teknologi >  >> NoSQL >> MongoDB

Er der nogen måde at atomisk opdatere to samlinger i MongoDB?

Der er masser af svar her, men jeg vil gerne udfylde alle de tomme felter her:

Er der nogen måde at atomisk opdatere to samlinger i MongoDB?

Nej. Atomic opdatering af to samlinger er faktisk en transaktion. MongoDB understøtter ikke transaktioner på tværs af samlinger eller endda inden for en samling.

MongoDB giver flere modifikatorer, der er atomare på et enkelt dokument. Så du kan øge flere forskellige variabler på én gang ($inc ). Selvom der er nogle begrænsninger her, kan du ikke udføre to forskellige operationer på en enkelt egenskab.

Er der en måde at betinget ændre noget i én samling baseret på resultaterne af anden samling i ét skud?

Der er nogle dokumenter her om atomopdateringer generelt. Men det, du virkelig har brug for, er en kø og en form for to-faset commit, eller du har brug for triggere.

Triggere er endnu ikke implementeret, så det er ikke rigtig en mulighed i dit tilfælde.

Der er en mulighed for, at beskeden bliver markeret som læst mellem disse handlinger, så vil jeg reducere antallet af "ulæste" forkert.

På dette tidspunkt har du et par forskellige strategier til at få dette til at opføre sig med en vis grad af konsistens. Helt ærligt, baseret på din beskrivelse vil du måske undersøge opbygningen af ​​en simpel kø, der opdaterer dine totaler.



  1. Hvordan bruger StackExchange.Redis flere endepunkter og forbindelser?

  2. Bruger du JSON med MongoDB?

  3. TypeError:db.collection er ikke en funktion

  4. MongoDB tæller særskilt værdi?