t = db.unset; t.drop(); orig = { _id : 1, emb : {} }; t.insert(orig); t.update( { _id : 1 }, { $unset : { 'emb.a' : 1 }}); t.update( { _id : 1 }, { $unset : { 'z' : 1 }}); assert.eq( orig , t.findOne() , "A" ); t.update( { _id : 1 }, { $set : { 'emb.a' : 1 }}); t.update( { _id : 1 }, { $set : { 'z' : 1 }}); t.update( { _id : 1 }, { $unset : { 'emb.a' : 1 }}); t.update( { _id : 1 }, { $unset : { 'z' : 1 }}); assert.eq( orig , t.findOne() , "B" ); // note that emb isn't removed t.update( { _id : 1 }, { $unset : { 'emb' : 1 }}); assert.eq( {_id :1} , t.findOne() , "C" );