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 № 1De 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).