2015-01-31 1 views
0

발신자와 수신자가 같은 person.so 문서가 될 수없는 사용자의 채팅 내역을 저장하기위한 데이터베이스를 디자인 중입니다. {sender :1 ,receiver:2}과 유사하지만 사용자 문서 {sender :1,receiver :1}을 삽입하면 오류가 발생합니다. 자바 스크립트 console.please guideline.i에서이를 달성하려면 어떻게해야합니까? mongodb에서 데이터베이스를 설계하고 있습니다.두 개의 키 값이 동일한 값을 가져서는 안됩니다.

답변

0

당신은 msgHistory{sender:1,receiver:1} 모두 전송 및 수신 if(msgHistory.sender == msgHistory.receiver){ // Do nothing } else {//Do something }가 동일한 경우, 당신이 나에게 sender을 물어 receiver이, 그것은 효율적 부울 할당해야하는지 ... 확인 대상이되는, 체크 포인트를 넣을 수 있습니다.

2

이러한 종류의 제약 조건은 각 메시지를 저장하기 전에 응용 프로그램 코드에서 확인해야합니다. 셸에서는 메시지를 데이터베이스에 저장하기 전에 메시지가 유효한지 확인하는 이와 같은 기능을 사용할 수 있습니다. 또한 주문하는 사용자 정의 메시지 오브젝트의 2 요소의리스트로서 [sender, receiver] 관계를 코딩 고려해

function sendMessage(message) { 
    if(message.sender == message.receiver) { 
    throw "Cannot send message to self"; 
    } else { 
    db.messages.save(message); 
    } 
} 

발신자이고 상기 수신기는이다. 이렇게하면 주어진 사용자와 관련된 모든 메시지를 쉽게 검색 할 수 있습니다.

예를 들어 메시지 개체의 형식이 { senderReceiver: [1, 2] } 인 경우 인 경우 db.messages.find({senderReceiver: 2})이라는 쿼리를 사용하여 사용자 2와 관련된 모든 메시지를 찾을 수 있습니다.

관련 문제