4 ответов:
Да есть, при безопасном вызове (или getLastError) функция update вернет массив с полем upsert и полем updatedExisting.
вы можете прочитать PHP версию этого здесь:http://php.net/manual/en/mongocollection.insert.php к низу.
как говорится в документации на
upserted:если upsert произошло, это поле будет содержать поле _id новой записи. Для вставки, либо это поле или updatedExisting будет присутствовать (если не произошла ошибка).
так upserted содержит
_idновой записи, если вставка была сделана или она будет увеличиватьсяupdatedExistingесли он обновил рекорд.Я уверен, что подобная вещь появляется во всех драйверах.
Edit
на самом деле это будет логическое значение в
только для справки, в узле.js:
collection.update( source, target, { upsert: true }, function(err, result, upserted) { ... });
только для справки, в узле.js с помощью Мангуста 3.6:
model.update( findquery, updatequery, { upsert: true }, function(err, numberAffected, rawResponse) { ... });где rawResponse выглядит так, когда он обновил существующий документ:
{ updatedExisting: true, n: 1, connectionId: 222, err: null, ok: 1 }и это выглядит так, когда он создал новый документ:
{ updatedExisting: false, upserted: 51eebc080eb3e2208a630d8e, n: 1, connectionId: 222, err: null,(оба случая вернут numberAffected = 1)
ответ был взят из книги " MongoDB Applied Design Patterns !определить, является ли upsert вставкой или обновление
Comments