2015-01-10 13 views
27

Ich möchte

neue Daten meine verschachtelte Array hinzufügen

Mein Dokument ist:

{ 
    "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" 
     } 
     ] 
    } 
    ] 
} 

ich Musik in dieser Wiedergabeliste Abschnitt hinzufügen möchten:

{ 
    "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" 
     } 
     ] 
    } 
    ] 
} 

Hier was ich versucht habe:

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

Nur um Sie über den Grund zu informieren, warum Leute hier ablehnen oder abstimmen, um hier zu schließen. Veröffentlichen Sie die relevanten Teile des Codes in Ihrer Frage. Verbinden Sie nicht extern (wahrscheinlich, um zu brechen) und lassen Sie uns nicht lange Auflistungen lesen, nur um herauszufinden, worüber Sie sprechen. Lesen Sie hierzu: http://stackoverflow.com/help/mcve –

Antwort

43

Wahrscheinlich so etwas, wo ID deine ObjectId ist. Die ersten {} sind notwendig, um Ihr Dokument zu identifizieren. Solange Sie einen anderen eindeutigen Bezeichner in Ihrer Sammlung haben, ist es nicht erforderlich, eine ObjectId zu verwenden.

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

Hallo. Sie geben keine Wiedergabeliste _id an. Ich habe mehrere Playlisten für jeden Benutzer – balkondemiri

+0

Hmmm, verpasst das. Ich habe meine Antwort aktualisiert. –

+0

Ich versuche es jetzt. Dieser Code funktioniert nicht :( – balkondemiri

Verwandte Themen