/ / Criar um documento sem devolvê-lo, no MongoDB / mongoose - mongodb, mongoose, node-mongodb-native

Crie um documento sem devolvê-lo, no MongoDB / mongoose - mongodb, mongoose, node-mongodb-native

Estou criando muitos documentos e estou preocupado com o fato de metade da largura de banda do servidor ser gasta para devolver esses novos documentos ao chamador.

Eu não quero o servidor para retornar o documento para mim. Eu só quero obter uma confirmação, uma vez que o documento foi salvo.

Eu fui capaz de abordar essa preocupação quando atualizando um documento, usando Model.updateOne() ao invés de Model.findOneAndUpdate().

Mas como posso fazer o mesmo ao criar um documento?

Até agora eu tentei:

Model.create(docData)

new Model(docData).save()

Model.collection.insert(docData)

Model.collection.insertMany([docData])

mas em todos os casos, o mongoose (ou o driver mongodb) retorna um documento para mim.

Não tenho certeza se o MongoDB está realmente enviando o documento de volta pela rede, ou se está apenas enviando de volta o novo _id e isso está sendo anexado aos dados originais pelo driver. Mas temo o primeiro.

Como posso salvar o documento sem que o MongoDB me envie de volta?

Respostas:

1 para resposta № 1

De acordo com documento mangusto de insertMany diz que o resultado é um insertWriteOpCallback que, segundo a documentação do driver mongodb, diz que devolve os documentos inseridos.


Em outras mãos documentação mongodb sobre insert nos fala sobre um Objeto WriteResult que não está retornando nenhum documento.


A resposta é que o mongodb-driver está adicionando o documento inserido à sua resposta.


O que você pode fazer é usar o método bulkWrite do driver mongodb-native, que permite executar uma inserção e obter apenas a resposta do mongodb (sem documentos).