Mongodb $ inserisce l’array annidato

Voglio aggiungere nuovi dati al mio array nidificato

Il mio documento è:

{ "username": "erkin", "email": "[email protected]", "password": "b", "playlists": [ { "_id": 58, "name": "asdsa", "date": "09-01-15", "musics": [ { "name": "INNA - Cola Song (feat. J Balvin)", "duration": "3.00" }, { "name": "blabla", "duration": "3.00" } ] } ] } 

Voglio aggiungere musica in questa sezione di playlist:

 { "username": "erkin", "email": "[email protected]", "password": "b", "playlists": [ { "_id": 58, "name": "asdsa", "date": "09-01-15", "musics": [ { "name": "INNA - Cola Song (feat. J Balvin)", "duration": "3.00" }, { "name": "blabla", "duration": "3.00" }, { "name": "new", "duration": "3.00" } ] } ] } 

Ecco cosa ho provato:

 $users->update( array( '_id' => new MongoId (Session::get('id')), 'playlists._id' => $playlistId ), array( '$push' => array('playlists.musics' => array( 'name' => 'newrecord', 'duration' => '3.00' )) ) ); 

Probabilmente qualcosa di simile in cui ID è il tuo ObjectId. I primi {} sono necessari per identificare il tuo documento. Non è richiesto l’uso di un ObjectId se si dispone di un altro identificativo univoco nella raccolta.

 db.collection.update( { "_id": ID, "playlists._id": "58"}, { "$push": {"playlists.$.musics": { "name": "test name", "duration": "4.00" } } } )