Допустим, у меня есть этот документ, который я хотел бы обновить:
array(
'_id' => 123,
'entries' => array(
'4d8aae834f42e06b638d0000' => array(
'user_id' => 2,
'ts' => 'Wed, 23 Mar 2011 19: 37: 55 -0700'
)
)
)
У меня есть массив, который я хотел бы добавить в поле ввода:
$entries = array(
'4d8aae834f42e06b638d0000' => array('user_id' => 3, 'ts' => 'Wed, 21 Mar 2011 19: 37: 55 -0700')
'4d8aae834f42e06b638d3219' => array('user_id' => 4, 'ts' => 'Wed, 22 Mar 2011 19: 37: 55 -0700')
);
Попытка запроса:
$updateData = array(
'$pushAll' => array(
'entries' => $entries
)
);
$db->update('journal', array('_id' => 123), $updateData, array('upsert' => true));
Приведенный выше запрос не добавит новые данные. Изменение модификатора с $ pushAll на $ set, очевидно, не сработает, поскольку он просто заменит то, что уже есть. Я пробовал $ addToSet, и он тоже не работал. У меня сейчас нет выбора.
Вот как я бы хотел, чтобы документ заканчивался на:
array(
'_id' => 123,
'entries' => array(
'4d8aae834f42e06b638d0000' => array(
'user_id' => 2,
'ts' => 'Wed, 23 Mar 2011 19: 37: 55 -0700'
),
'4d8aae834f42e06b638d0000' => array(
'user_id' => 3,
'ts' => 'Wed, 21 Mar 2011 19: 37: 55 -0700'
),
'4d8aae834f42e06b638d3219' => array(
'user_id' => 4,
'ts' => 'Wed, 20 Mar 2011 19: 37: 55 -0700'
)
)
)
Заранее спасибо.