mongodb - remove specific subdocument mongo in array -
i have following document :
{ "grades" : [ { "grade" : 80, "mean" : 75, "std" : 8, "otro" : [ { "i" : 1 }, { "i" : 2 } ] }, { "grade" : 85, "mean" : 90, "std" : 5 }, { "grade" : 85, "mean" : 90, "std" : 5, "otro" : [ { "i" : 3 }, { "i" : 4 } ] }, { "grade" : 85, "mean" : 95, "std" : 6 }, { "grade" : 90, "mean" : 85, "std" : 5, "otro" : [ { "i" : 5 }, { "i" : 6 } ] } ] } what want it's remove sub document 'otro.i' : 2, have tried :
db.ejemplo.update( { _id: oid, 'grades': { $elemmatch: { 'otro': { $elemmatch: { 'i': 2 } } } } }, { '$pull': { 'grades': { 'otro': { 'i':2 } } } } ); but removes subdocument 'otro' key 'i' equal 2 ,
this before :
{ "grade" : 80, "mean" : 75, "std" : 8, "otro" : [ { "i" : 1 }, { "i" : 2 } ] } this after
{ "grade" : 80, "mean" : 75, "std" : 8 } but result want :
{ "grade" : 80, "mean" : 75, "std" : 8, "otro" : [ { "i" : 1 } ] } any ideas ?
use $ positional operator update document. identifies element in array update without explicitly specifying position of element in array:
db.ejemplo.update( { _id: oid, 'grades': { $elemmatch: { 'otro': { $elemmatch: { 'i': 2 } } } } }, { '$pull': { 'grades.$.otro': {"i": 2} } } )
Comments
Post a Comment