MongoDB: insert (Bulk.indsæt) vs indsætte flere (indsæt([…]))

Er der nogen forskel mellem en insert vs indsættelse af flere dokumenter?

var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } );
bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } );
bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } );
bulk.execute();

VS

db.collection.insert(
   <document or array of documents>
)

Er der en thats hurtigere?

OriginalForfatteren Jiew Meng | 2016-01-31

2 svar

  1. 31

    @Dummy er korrekt, at hovedparten operationer er generelt hurtigere end individuelle skær, men fra version 2.6 og over, at indsætte flere dokumenter ved hjælp af collection.insert er kun syntaktisk sukker for en BulkWrite. Hvis du indstiller ordered flag til false, ydeevne bør være identisk med en uordnet insert:

    db.collection.insert(<document array>,{ordered:false})

    Denne operation vil vende tilbage til en BulkWriteResult, se flere detaljer i dokumentation.

    OriginalForfatteren Jaco

  2. 24

    Ja, der er forskel. Med bulk ops (altid), behøver du kun at gå til databasen, når du udføre operationen på flere poster, så du vender tilbage til programmet. Med enkelte indsætter, vil du nødt til at gå til databasen, skal de indsætte, og derefter gå tilbage til den applikation, og du vil gentage denne proces for hver enkelt indsætte du fortælle database til at udføre. Så de enkelte indsatser er meget langsom sammenlignet med hovedparten operationer. Det er ligesom indkøb af dagligvarer, hvis du har alt hvad du skal købe, der er anført ud, kan du købe dem alle på en tur (insert), men hvis der for hvert element, du nødt til at køre til butikken for at få det, og derefter køre hjem, derefter køre tilbage til butikken for at købe en anden vare, så er det ikke meget effektiv (som individuelle skær)

    Bemærk: Selv om, når de vekselvirker med MongoDB brug af skallen, behøver du kun at beskæftige sig med en insert funktion for bulk-og individuelle skær ens, bør du lave en sondring mellem insertOne() og insertMany() operationer, når du bruger Cvs driver Api ‘ er. Og du skal aldrig kalde insertOne() inde i en løkke (årsag: se mit indkøb af dagligvarer analogi ovenfor).

    OriginalForfatteren Almost Handsome

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *