문제

현재 다음과 같이 저장된 채널 컬렉션이 있습니다.

{ "_id" : ObjectId("4f5d1012d48147e840000000"), "title" : "Testing", "description" : "hello!", "created" : "2012-03-11 20:50:26", "user" : ObjectId("4f5d0408d48147207f000000") }
.

그러나 사용자가 이제이 채널을 구독하고 싶습니다.나는 이것이 중요한 컬렉션으로 간주 될 정도로 중요하다고 생각하지 않으므로 다음과 같이 저장하고 싶습니다 :

{ 
    "_id" : ObjectId("4f5d1012d48147e840000000"), 
    "title" : "Testing", 
    "description" : "hello!",
    "subscriptions" : 
        { "user" : ObjectId("USERIDHERE"), "created" : DATETIME },
        { "user" : ObjectId("USERIDHERE"), "created" : DATETIME },
        { "user" : ObjectId("USERIDHERE"), "created" : DATETIME }
    "created" : "2012-03-11 20:50:26", 
    "user" : ObjectId("4f5d0408d48147207f000000") 
}
.

리튬 객체 내 에서이 작업을 세밀하게 구현하는 방법 주위에 머리를 가져 오는 것처럼 보입니다.$story->vote 속성은 모든 업데이트에서 푸시하는 배열이 될 것입니까?

도움이 되었습니까?

해결책

IMHO, 구독을 사용하는 방법에 따라 달라질 수있는 구조는 방법.

이렇게 말하는 이유는 성능이 내장 된 몽고 객체 vs 링크 된 컬렉션을 사용하여 행에 문제가 발생하기 때문입니다. http://www.mongodb.org/display/docs/schema+design

사용자 ID를 가입과 함께 넣는 대신 채널 ID를 사용자와 연결하는 것을 제안합니다 (가입 한 사용자의 내장 컬렉션으로 채널 ID).

사용자의 컬렉션 (제어판 또는 대시 보드 또는 프런트 페이지 등)을 당길 때 표시 할 채널 목록이 있으므로 여기에서의 사용이 의미가 있습니다.

채널에 사용자 ID를 내장함으로써 채널을 표시하고 등록하는 모든 사용자가 스택 오버플로의 채팅 시스템과 같이 표시하는 경우에만 의미가 있습니다.

집계를 수행 할 계획을 세우거나 구독에 액세스하는 한 컬렉션에 더 많은 컬렉션을 갖는 경우에 별도의 컬렉션에 넣는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top