diff --git a/lib/collection.js b/lib/collection.js
index <HASH>..<HASH> 100644
--- a/lib/collection.js
+++ b/lib/collection.js
@@ -244,6 +244,11 @@ Collection.prototype.findAndModify = function (query, update, opts, fn) {
 
   opts = opts || {};
 
+  // `new` defaults to `true` for upserts
+  if (null == opts.new && opts.upsert) {
+    opts.new = true;
+  }
+
   if (fn) {
     promise.on('complete', fn);
   }
Enhanced findAndModify default behavior for upserts.