存在しない場合にのみ、私は、各文書がmembers
のアレイを有するlists
コレクションを持っています。 members
配列の各要素は、email
プロパティ、作成date
プロパティ、およびその他のメタを持つドキュメントです。 members.email
にユニークなインデックスを設定して、同じメールを同じリストに2回入力しないようにしていますが、元のdate
の値を保持したいと思います。残念ながら、$addToSet
でも$push
もこれを実行していないようです。 $のプッシュを使用して
例:
$lists->update(array('_id' => $list['_id'], 'members.email' => array('$ne' => $email)), array('$push' => array('members' => array(
'email' => $email,
'date' => new MongoDate(),
// etc.
))));
と$ addToSetと
:$lists->update(array('_id' => $list['_id']), array('$addToSet' => array('members' => array(
'email' => $email,
'date' => new MongoDate(),
// etc.
))));
どちらの例も、原因ユニークdate
値(私は仮定)を新しいものに全体埋め込まれた文書を交換してください。 members.email
がまだ存在しない場合、または2つのコマンドでこれを行う必要がある場合は、$push
の「メンバー」ドキュメントのみが可能ですか?
また、members
をparent_list
のようなプロパティを持つ独自のコレクションに入れた方がスケーラビリティに優れていますか?
私は$存在する、ほぼ正だが私が探しているソリューションではありません。 – Kevin