繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM