[英]Why do the insertOne method from mongodb node.js driver mutates the object to be inserted?
我正在学习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 ie _id db.close() }) })
我很惊讶地看到doc
被mongo变异了,看看检查两个console.log
语句的输出。 为什么doc
对象发生了变异。
Mongo为每个没有自己定义的文档添加了一个自动生成的_id。 这是一种称为ObjectId的特殊对象类型,用作主键。 您可以在此处查看格式的详细信息。
您可以通过将自己的_id添加到每个对象来绕过自动生成的_id,但是您需要能够保证它们是唯一的,就像您尝试使用相同的_id存储两个对象一样,您将获得一个重复的键错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.