Из документации mongodb, upsert работает следующим образом:
upsert: true создает новый документ, когда ни один документ не соответствует критериям запроса.
Здесь, еслизапрос пуст {}
, тогда он будет соответствовать всем документам.Затем он обновляет первый соответствующий документ.
ТАК, что вы должны использовать запрос, который не будет соответствовать ни одному документу, вы должны быть уверены, что он вставит новый.Будьте осторожны, если вы используете {_id: ''}
или {_id: 'undefined'}
, поскольку ни у одного документа не должно быть такого идентификатора, он не будет работать должным образом: он вставит новый документ с указанным в качестве значения _id.Обязательно используйте другой атрибут для создания запроса.
Попробуйте это тогда:
if(data.id != '')
var id = {'_id': data.id};
else
var id = {'unexistingAttribute': 'anyValue'};
dbo.collection('parkings').update(id, entry, {upsert: true}, refresh_parkings);
Затем следует создать новый документ И сгенерировать правильный новый _id, так как ни один документ не должен соответствоватьзапрос предоставлен.