Ben her belge members bir dizi var bir lists koleksiyonu var. members dizisinin her bir elemanı bir email özellik, yaratılış date mülkiyet, ve diğer bazı meta ile bir belgedir. I members.email iki kez aynı listede girmeden aynı e-posta önlemek için benzersiz bir dizin var, ama ben orijinal date değerini korumak istiyoruz. Ne yazık ki, ne $addToSet, ne $push bunu görünmektedir.
$ Itme kullanarak Örnek:
$lists->update(array('_id' => $list['_id'], 'members.email' => array('$ne' => $email)), array('$push' => array('members' => array(
'email' => $email,
'date' => new MongoDate(),
// etc.
))));
Ve $ addToSet ile:
$lists->update(array('_id' => $list['_id']), array('$addToSet' => array('members' => array(
'email' => $email,
'date' => new MongoDate(),
// etc.
))));
Her iki örnek nedeniyle (I varsayıyorum) benzersiz date değerine yenisiyle tüm gömülü belgeyi değiştirin. Bu mümkün mü, sadece $push "üye" belge eğer members.email zaten yok ya da ben iki komutlarla bunu yapmak gerekir?
Alternatif olarak, bu daha iyi olurdu ölçeklenebilirlik-bilge bir parent_list gibi özelliği ile kendi koleksiyonunda members koymak için?