sql >> Databasteknik >  >> NoSQL >> MongoDB

Mungos (mongodb) batchinlägg?

Model.create() vs Model.collection.insert():ett snabbare tillvägagångssätt

Model.create() är ett dåligt sätt att göra insatser om du har att göra med en mycket stor bulk. Det kommer att gå mycket långsamt . I så fall bör du använda Model.collection.insert , som presterar mycket bättre . Beroende på storleken på bulken, Model.create() kommer till och med att krascha! Försökte med en miljon dokument, utan lycka. Använder Model.collection.insert det tog bara några sekunder.

Model.collection.insert(docs, options, callback)
  • docs är uppsättningen av dokument som ska infogas;
  • options är ett valfritt konfigurationsobjekt - se dokumenten
  • callback(err, docs) kommer att anropas efter att alla dokument har sparats eller ett fel uppstår. När det gäller framgång är docs samlingen av bevarade dokument.

Som Mongooses författare påpekar här, kommer denna metod att kringgå alla valideringsprocedurer och komma åt Mongo-drivrutinen direkt. Det är en avvägning du måste göra eftersom du hanterar en stor mängd data, annars skulle du inte kunna infoga den i din databas alls (kom ihåg att vi pratar om hundratusentals dokument här).

Ett enkelt exempel

var Potato = mongoose.model('Potato', PotatoSchema);

var potatoBag = [/* a humongous amount of potato objects */];

Potato.collection.insert(potatoBag, onInsert);

function onInsert(err, docs) {
    if (err) {
        // TODO: handle error
    } else {
        console.info('%d potatoes were successfully stored.', docs.length);
    }
}

Uppdatering 2019-06-22 :även om insert() kan fortfarande användas bra, den har fasats ut till förmån för insertMany() . Parametrarna är exakt desamma, så du kan bara använda den som en drop-in-ersättning och allt borde fungera bra (nåja, returvärdet är lite annorlunda, men du använder det förmodligen inte ändå).

Referens

  • Mongo-dokumentation
  • Aaron Heckman på Google Groups diskuterar massinlägg


  1. Hur man modellerar ett likes-röstningssystem med MongoDB

  2. Pivotera rader till kolumner i MongoDB

  3. Redis Vue Desktop

  4. JSON serialiserar Mongodb