2016-06-21 2 views
1

Простой код для подключения к БД, создания коллекции и записи документа. Однако почему jsonobj изменен, позвонив по номеру collection.insert?MongoDB Collection Insert Добавляет _id Поле

var mongo = require('mongodb').MongoClient; 

mongo.connect('mongodb://localhost:27017/testDB', function(err, connection) { 
    if (!err) { 
    connection.createCollection('test', function (err, collection) { 
     if (!err) { 
     var jsonobj = {foo: 'bar', abc: 'xyz'}; 
     collection.insert(jsonobj, function (err, result) { 
      if (!err) { 
      //is not equal to the previous value of jsonobj 
      console.log(jsonobj); 
      } 
     }); 
     } 
    }); 
    } 
}); 

Выход я получаю { foo: 'bar', abc: 'xyz', _id: 5769a38cd01e25512a3dbdd8 }, который не равен исходному значению jsonobj. Я понимаю, что у всех документов MongoDB есть поле _id, но почему оно добавлено к моему объекту?

ответ

3

От: https://docs.mongodb.com/manual/reference/glossary/

_id

Поле обязательно в каждом документе MongoDB. Поле _id должно иметь уникальное значение. Вы можете подумать о поле _id в качестве первичного ключа документа . Если вы создаете новый документ без поля _id, MongoDB автоматически создает поле и назначает уникальный объект BSON ObjectId.

Ваш объект является документом, и Монго добавляет его.

+0

Зачем нужно модифицировать объект? – mbacvanski

+0

Он однозначно идентифицирует документ, поэтому, даже если у вас есть два документа с одинаковыми полями, они могут быть дифференцированы. –

+0

Я имею в виду, в каком случае разработчик счел бы полезным изменить свой объект? – mbacvanski