Ответ 1
Что определяет, будет ли save
будет вставка или обновление, это флаг isNew
, как вы можете видеть здесь.
Этот флаг автоматически устанавливается на false
, когда экземпляр документа возвращается из запроса find
(или любого его варианта). Если вы вручную создаете документ, попробуйте установить этот флаг в значение false перед его сохранением:
var instance = new Model({ '_id': '...', field: '...' });
instance.isNew = false;
instance.save(function(err) { /* ... */ });
Существует также функция init
, которая инициализирует документ и автоматически устанавливает isNew
в false
:
var data = { '_id': '...', field: '...' };
var instance = new Model();
instance.init(data, {}, function(err) {
instance.save(function(err) { /* ... */ })
});