traverse - Mongodb $ push en una matriz anidada
update array mongodb (2)
¡De esta manera funcionó para mí!
"playlists. $ []. musics":
db.collection.update(
{ "_id": ID, "playlists._id": "58"},
{ "$push":
{"playlists.$[].musics":
{
"name": "test name",
"duration": "4.00"
}
}
}
)
Quiero agregar nuevos datos a mi matriz anidada
Mi documento es:
{
"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"
}
]
}
]
}
Quiero agregar música en esta sección de la lista de reproducción:
{
"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"
}
]
}
]
}
Esto es lo que probé:
$users->update(
array(
''_id'' => new MongoId (Session::get(''id'')),
''playlists._id'' => $playlistId
),
array(
''$push'' => array(''playlists.musics'' => array(
''name'' => ''newrecord'',
''duration'' => ''3.00''
))
)
);
Probablemente algo como esto donde ID es su ObjectId. Los primeros {} son necesarios para identificar su documento. No es necesario usar un ObjectId siempre que tenga otro identificador único en su colección.
db.collection.update(
{ "_id": ID, "playlists._id": "58"},
{ "$push":
{"playlists.$.musics":
{
"name": "test name",
"duration": "4.00"
}
}
}
)