각 문서의 배열이 members
인 lists
컬렉션이 있습니다. members
배열의 각 요소는 email
속성, 생성 date
속성 및 기타 일부 메타가있는 문서입니다. members.email
에 동일한 색인을 두 번 입력하면 동일한 이메일이 두 번 입력되는 것을 방지하기 위해 고유 색인을 가지고 있지만 원래 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
값 (I 가정)에 새로운 하나를 전체 포함 된 문서를 대체합니다. members.email
이 아직 없거나 두 명령에서이 작업을 수행해야하는 경우에만 $push
"구성원"문서 만 가능합니까?
members
을 parent_list
과 같은 속성으로 자신의 컬렉션에 넣는 것이 더 좋을까요?
는 거의 긍정적 인 $은 내가 찾고 해결책 아니다 존재입니다. – Kevin