t = db.find_and_modify_sever6588; initial = { _id : 1 , a : [ { b : 1 } ] , z : 1 } up = { "$set" : { "a.$.b" : 2 } } q = { _id : 1 , "a.b" : 1 } correct = { _id : 1 , a : [ { b : 2 } ] , z : 1 } t.drop(); t.insert( initial ) t.update( q , up ) assert.eq( correct , t.findOne() ) t.drop() t.insert( initial ) x = t.findAndModify( { query : q , update : up } ) assert.eq( correct , t.findOne() ) t.drop() t.insert( initial ) x = t.findAndModify( { query : { z : 1 , "a.b" : 1 } , update : up } ) assert.eq( correct , t.findOne() )