我正在学习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
对象发生了变异。
答案 0 :(得分:1)
Mongo为每个未定义自身的文档添加了自动生成的_id。这是一种称为ObjectId的特殊对象类型,用作主键。您可以看到格式here的详细信息。
您可以通过将自己的_id添加到每个对象来绕过自动生成的_id,但是您需要能够保证它们是唯一的,就像您尝试使用相同的_id存储两个对象一样重复键错误。