Как сделать сложное обновление на MongoDB

У меня есть вопрос. Мои данные такие:

{
  "name" : "username",
  "surname" : "surname",
  "playlists": {
    "name": "playlistName",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  },
  "playlists": {
    "name": "playlistName2",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  }

}


Я хочу добавить к этим данным еще один раздел "плейлисты".
Мои данные должны быть такими:

{
  "name" : "username",
  "surname" : "surname",
  "playlists": {
    "name": "playlistName",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  },
  "playlists": {
    "name": "playlistName2",
    "date": "27-09-14",
    "musics": [
      "music name 1",
      "music name 2"
    ]
  },
  "playlists" : {
    "blabla" : "blabla"
  }

}

Запрос на обновление не сработал.
Как мне? Заранее спасибо.
я пытаюсь

$dbData = array('$set' => array('playlists' => array('blabla' => 'blabla')));
$users->update(array('_id' => new MongoId ('541f0e2216c8272c058b4567')), $dbData);


person balkondemiri    schedule 27.09.2014    source источник
comment
Покажите нам код. Как вы пытаетесь это сделать?   -  person briba    schedule 27.09.2014
comment
Вы имеете в виду, что хотите добавить еще один плейлист к тому, который существует в ваших данных? или просто хотите добавить еще один массив?   -  person Milad    schedule 27.09.2014
comment
легче сказать нам, что именно вам нужно   -  person Milad    schedule 27.09.2014
comment
Я хочу добавить массив к существующим данным.   -  person balkondemiri    schedule 28.09.2014


Ответы (1)


Также возможно иметь несколько одинаковых ключей, но это не рекомендуется (у вас есть 2 ключа playlists и вы хотите больше).

Одно из разумных решений — сделать playlists массивом и поместить в него элементы.

{
  "name" : "username",
  "surname" : "surname",
  "playlists": [...]
}

$dbData = array('$push' => array('playlists' => array ('blabla' => 'blabla'))); 
$users->update(array('_id' => new MongoId ('541f0e2216c8272c058b4567')), $dbData);
person Salvador Dali    schedule 27.09.2014