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?