2017-11-20 1 views
1

Ich erstelle viele Dokumente, und ich bin besorgt, dass die Hälfte der Server-Bandbreite für die Rückgabe dieser neuen Dokumente zurück an den Anrufer ausgegeben wird.Erstellen Sie ein Dokument, ohne es zu senden, in MongoDB/mongoose

Ich möchte nicht, dass der Server das Dokument an mich zurückgibt. Ich möchte nur eine Bestätigung erhalten, sobald das Dokument gespeichert wurde.

ich in der Lage gewesen, diese Sorge zu adressieren, wenn ein Dokument zu aktualisieren, die von Model.updateOne() statt Model.findOneAndUpdate() verwenden.

Aber wie kann ich das gleiche tun, wenn Sie ein Dokument erstellen?

Bisher habe ich versucht:

Model.create(docData) 

new Model(docData).save() 

Model.collection.insert(docData) 

Model.collection.insertMany([docData]) 

aber in jedem Fall, Mungo (oder der mongodb Treiber) gibt ein Dokument zu mir.

Ich bin mir nicht sicher, ob MongoDB das Dokument tatsächlich über das Netzwerk zurücksendet, oder ob es nur die neue _id zurücksendet und diese vom Treiber an die Originaldaten angehängt wird. Aber ich fürchte die erstere.

Wie kann ich das Dokument speichern, ohne dass MongoDB es mir zurückschickt?

Antwort

1

Nach mongoose document of insertMany heißt es, dass das Ergebnis eine insertWriteOpCallback ist, die laut der Dokumentation von mongodb Treiber sagt, dass es die eingefügten Dokumente zurückgibt.


In anderen Händen der mongodb documentation about insert erzählt uns von einem WriteResult object, die kein Dokument zurückkehrt.


Die Antwort ist, dass mongodb-Treiber fügt das eingefügte Dokument in die Antwort.


Was Sie tun können, ist die Methode bulkWrite von mongodb-native Treiber zu verwenden, die es Ihnen ermöglichen einen Einsatz durchzuführen und die mongodb Antwort nur zu erhalten (so ohne Dokumente).

+1

Danke. Es macht mir nichts aus, ein Dokument vom Fahrer zurück zu bekommen, solange es nicht über den Draht gekommen ist. Wenn man in die Dokumente geht, scheint es, dass, abgesehen von 'findOneAndUpdate', keine dieser Funktionen Dokumente zurücksendet - es ist nur eine Illusion von Mungo oder dem Fahrer. – joeytwiddle

Verwandte Themen