gpt4 book ai didi

javascript - 为什么来自 mongodb node.js 驱动程序的 insertOne 方法会改变要插入的对象?

转载 作者:可可西里 更新时间:2023-11-01 09:51:03 24 4
gpt4 key购买 nike

我正在用node学习mongodb,我正在玩下面的代码

var assert = require('assert')
var url = 'mongodb://localhost:27017/learnyoumongo'
var client = require('mongodb').MongoClient

var doc = {
firstName: 'Steve',
lastName: 'Smith'
}
console.log(doc) //logs as expected
client.connect(url, (err, db) => {
assert.equal(err, null)
var docs = db.collection('docs')
docs.insertOne(doc, (err, result) => {
assert.equal(err, null)
console.log(doc) //logs with an extra property i.e. _id
db.close()
})
})

我很惊讶地看到 doc 被 mongo 变异了,看看检查两个 console.log 语句的输出。为什么 doc 对象发生了变异。

最佳答案

Mongo 会为每个未定义自身的文档添加一个自动生成的 _id。这是一种称为 ObjectId 的特殊对象类型,用作主键。可以看到格式的详细信息 here .

您可以通过将自己的 _id 添加到每个对象来绕过自动生成的 _id,但您需要能够保证它们是唯一的,就像您尝试存储具有相同 _id 的两个对象一样重复键错误。

关于javascript - 为什么来自 mongodb node.js 驱动程序的 insertOne 方法会改变要插入的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32849437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com