mongodb - atom - operationer

, mongodb ikke støtter, multi - dokument atom - transaktioner.men det giver økonomiske operationer i et enkelt dokument.hvis et dokument er hundrede inden opdateringen redegørelse enten vil ajourføre alle områder eller ingen, således at atomicity på dokument., model data for atom - operationer, er den anbefalede fremgangsmåde til at opretholde atomicity ville være at holde alle relaterede oplysninger, der ofte er ajourført, sammen i et enkelt dokument med indbyggede dokumenter.dette vil sikre, at alle oplysninger om et enkelt dokument er atomenergi.overveje følgende produkter dokument:,, ("_id": 1 "product_name": "samsung s3", "kategori": "mobile", "product_total": 5, "product_available": 3, "product_bought_by": [{"kunde": "john", "date": "7-jan-2014"} {"kunde": "mærke", "date": "8-jan-2014"}]}, i det dokument, vi har forankret den kunde, der køber information af produktet, product_bought_by område.nu, hvor vi en ny kunde køber produktet, må vi først undersøge, om produktet stadig er tilgængelige på, product_available område.hvis der foreligger, vil vi reducere værdien af product_available område, som indsætter den nye kunde er indbygget dokument i product_bought_by område.vi vil bruge, findandmodify, kommando til denne funktion, fordi det søgning og opdatering af de dokumenter, på samme sted.,,> db. produkter. findandmodify ({forespørgsel: {_id: 2, product_available: {$gt: 0}}, ajourføre: {$inc. (product_available: - 1}, $tryk: {product_bought_by: {kunde: "stjæle", fødselsdato: "9-jan-2014"}}}}) vores tilgang af indbyggede dokument, og ved hjælp af findandmodify forespørgsel sikrer, at produktet købe oplysninger ajourføres, hvis produktet er til rådighed.og i hele denne transaktion er i samme spørgsmål, er atomenergi.i modsætning til det, at den situation, hvor vi har holdt de produkter, der er til rådighed, og oplysninger om, hvem der har købt produktet, hver for sig.i dette tilfælde vil vi først undersøge, om produktet er tilgængelige på det første spørgsmål.så i det andet spørgsmål, vi vil opdatere køb oplysninger.det er dog muligt, at mellem henrettelserne af disse to spørgsmål, nogle andre bruger har købt produktet, og det er ikke mere tilgængelige.uden at vide det, vores andet spørgsmål vil opdatere køb oplysninger baseret på resultatet af den første undersøgelse.dette vil gøre databasen inkonsekvent, fordi vi har solgt en vare, som ikke er til rådighed.,,,



Previous:
Next Page: