 <p>By default find_and_modify returns the hash, check the <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#find_and_modify-instance_method" rel="nofollow">documentation</a> </p> <p><strong>Parameters:</strong> </p> <ul> <li>opts (Hash) (defaults to: {}) — a customizable set of options</li> </ul> <p><strong>Options Hash (opts):</strong></p> <ul> <li>:query (Hash) — default: {} — a query selector document for matching the desired document.</li> <li>:update (Hash) — default: nil — the update operation to perform on the matched document.</li> <li>:sort (Array, String, OrderedHash) — default: {} — specify a sort option for the query using any of the sort options available for Cursor#sort. Sort order is important if the query will be matching multiple documents since only the first matching document will be updated and returned.</li> <li>:remove (Boolean) — default: false — If true, removes the the returned document from the collection.</li> <li>:new (Boolean) — default: false — If true, returns the updated document; otherwise, returns the document prior to update.</li> </ul> <p><strong>Returns:</strong></p> <ul> <li>(Hash) — the matched document.</li> </ul> <p>But you can convert the hash to your collection object by simply initializing the model by passing the hash as a argument</p> <pre><code> &gt;&gt; x = MyModel.collection.find_and_modify(:query =&gt; {...},:update =&gt; {...}) &gt;&gt; x.class &gt;&gt; BSON::OrderedHash &gt;&gt; obj = MyModel.new(x) &gt;&gt; obj.class &gt;&gt; MyModel </code></pre> <p>And now you can apply any mongoid operation on the converted object. It will work perfectly.</p> <p>Hope it helps</p>