2012-08-12 3 views
0
$posts = $collection->find(); 

각 게시물을 참조하는 범주를 열망하면 어떻게해야합니까?열정적 인 DB 참조

//1 Document from $posts 
{ 
    "_id": ObjectId("502803b6d4ebdfd805000032"), 
    "title": "abcd", 
    "message": "abc", 
    "category": { 
    "$ref": "categories", 
    "$id": ObjectId("5027e15dd4ebdfd80500001e") 
    } 
} 

//the document in categories referenced from the post above 
{ 
    "_id": ObjectId("5027e15dd4ebdfd80500001e"), 
    "name": "miscellaneous", 
    "slug": "miscellaneous", 
    "description": "", 
    "created_at": ISODate("2012-08-12T17: 01: 17.0Z"), 
    "updated_at": ISODate("2012-08-12T19: 27: 50.0Z") 
} 

답변

1

Mongo에는 서버 측 "eager"로드가 없습니다. 관련 기록을로드 할 수 이처럼

는 게시물 커서를 통해 반복하고 수동으로 관련 문서에 대해 쿼리합니다. 전체 "게으른"로딩 일에 대해 걱정하지 마십시오

, 그것은 몽고와 괜찮습니다.

다양한 알 수없는 상황으로 인해 서버에서 부담을 덜고 싶다면 _id의 배열을 모으는 데 필요한 모든 게시물을 반복 할 수 있습니다. 그런 다음 하나의 쿼리로 모두 해당 카테고리를 가져옵니다. 필요시 다시 정렬하고 정렬 할 수 있습니다. 나는 정직 경우

는 DBREFS는 그들이 생각하고 실제로 거의 몽고에 필요하지 않습니다 무엇을하지 않습니다. 일반적으로 다른 행과 관련된 ObjectId은 정상적으로 처리됩니다.

DBRef가 실제로하는 일은 관련 레코드를 더 쉽고 간단하게 만들 수있는 개체를 제공하는 것입니다. http://php.net/manual/en/class.mongodbref.php은 컬렉션을 아직 모르는 경우에만 유용합니다. 많은 관련 컬렉션에 대해 ID를 설명하는 것으로 생각하십시오.