我正在创建大量文档,我担心服务器带宽的一半用于将这些新文档返回给调用者。
我不希望服务器将文档返回给我。我只想在文档保存后得到确认。
使用Model.updateOne()
代替Model.findOneAndUpdate()
时,我能够在更新文档时解决此问题。
但是在创建文档时如何才能这样做?
到目前为止,我已经尝试过:
Model.create(docData)
new Model(docData).save()
Model.collection.insert(docData)
Model.collection.insertMany([docData])
但在每种情况下,mongoose(或mongodb驱动程序)都会向我返回一份文件。
我不确定MongoDB是否实际上是通过网络发送文档,还是只是发回新的_id
并且驱动程序将其附加到原始数据。但我担心前者。
如果没有MongoDB将文件发回给我,如何保存文件?
答案 0 :(得分:1)
根据mongoose document of insertMany,它说结果是insertWriteOpCallback,根据mongodb驱动程序的文档说它返回插入的文档。
另一方面,mongodb documentation about insert告诉我们一个WriteResult object没有返回任何文件。
答案是mongodb-driver正在将插入的文档添加到其响应中。
您可以使用mongodb-native驱动程序中的bulkWrite方法,它允许您执行插入并仅获取mongodb响应(因此没有文档)。