首页 > 解决方案 > MongoDB insertOne 改变数据?

问题描述

我正在学习将数据插入 mongodb,这是代码:

console.log(this.data) //first
userCollection.insertOne(this.data)
console.log(this.data) //second

第一个日志:

{用户名:aaa,密码:aaa}

第二个日志:

{用户名:aaa,密码:aaa,_id:some_id_here}

_id来自哪里?

mongodb 会更改数据还是像回调一样工作?

就像当我们在 mongodb 中插入数据时,它会将已插入的数据发回?

标签: javascriptnode.jsmongodb

解决方案


所有其他答案都是正确的,但他们无法解释为什么会发生这种情况。

如果您检查 Node.js MongoDB 驱动程序 API 的insertOne方法,您会注意到有一个属性可以传递给名为 的选项对象forceServerObjectId,它的作用是什么,我在引用:

强制服务器分配 _id 值而不是驱动程序。

并且默认设置为false.

因此,如果您使用的是驱动程序:

如果传入的文档不包含该_id字段,驱动程序将在每个缺少它的文档中添加一个,从而改变文档。

forceServerObjectId可以通过将属性设置为 来覆盖此行为true

轰隆隆,给你


推荐阅读