2017-04-09 1 views
2

나는 몽고 워드 프로세서의 제안에 따라 부모를 가졌다. & 자식 컬렉션에서 자식 컬렉션의 부모를 참조하는 자식 컬렉션은 자라. https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/MongoDB/몽구스 1 대 다수가 하위 그룹에 부모를 대면하고 합류한다

제작사 (부모) 컬렉션 : 책 (아이) 컬렉션

{ 
    _id: "oreilly", 
    name: "O'Reilly Media", 
    founded: 1980, 
    location: "CA" 
} 

- 그들의 발행인을 참조 :

{ 
    _id: 123456789, 
    title: "MongoDB: The Definitive Guide", 
    author: [ "Kristina Chodorow", "Mike Dirolf" ], 
    published_date: ISODate("2010-09-24"), 
    pages: 216, 
    language: "English", 
    publisher_id: "oreilly" 
},{ 
    _id: 234567890, 
    title: "50 Tips and Tricks for MongoDB Developer", 
    author: "Kristina Chodorow", 
    published_date: ISODate("2011-05-06"), 
    pages: 68, 
    language: "English", 
    publisher_id: "oreilly" 
} 

지금 내가 무엇을 달성하려고하는 것은 모든 출판사를 얻을 수있다 그 (것)들에 의하여 책의 부분 배열과 더불어 :

{ 
    "_id": "oreilly", 
    "name": "O'Reilly Media", 
    "founded": 1980, 
    "location": "CA", 
    "books": [ 
    { 
     "_id": 123456789, 
     "title": "MongoDB: The Definitive Guide", 
     "author": [ 
     "Kristina Chodorow", 
     "Mike Dirolf" 
     ], 
     "published_date": "2010-09-24", 
     "pages": 216, 
     "language": "English", 
     "publisher_id": "oreilly" 
    }, 
    { 
     "_id": 234567890, 
     "title": "50 Tips and Tricks for MongoDB Developer", 
     "author": "Kristina Chodorow", 
     "published_date": "2011-05-06", 
     "pages": 68, 
     "language": "English", 
     "publisher_id": "oreilly" 
    } 
    ] 
} 

나는 몽구스 (Mongoose)를 사용한다. & 출판사에 책에 대한 참고서를 저장했다면 .populate ("books")를 할 수 있었다는 것을 안다. 책이 계속 늘어나고 싶지 않기 때문에. 도서 컬렉션에 게시자 참조가있는 것과 동일한 결과를 얻는 방법을 알고 싶습니다.

답변

2

조인을 수행하려면 $lookup을 사용해야합니다.

db.publisher.aggregate([{$lookup: {from: 'books', localField: '_id', foreignField: 'publisher_id', as: 'books'}} ]).pretty() 
{ 
     "_id" : "oreilly", 
     "name" : "O'Reilly Media", 
     "founded" : 1980, 
     "location" : "CA", 
     "books" : [ 
       { 
         "_id" : 123456789, 
         "title" : "MongoDB: The Definitive Guide", 
         "author" : [ 
           "Kristina Chodorow", 
           "Mike Dirolf" 
         ], 
         "published_date" : ISODate("2010-09-24T00:00:00Z"), 
         "pages" : 216, 
         "language" : "English", 
         "publisher_id" : "oreilly" 
       }, 
       { 
         "_id" : 234567890, 
         "title" : "50 Tips and Tricks for MongoDB Developer", 
         "author" : "Kristina Chodorow", 
         "published_date" : ISODate("2011-05-06T00:00:00Z"), 
         "pages" : 68, 
         "language" : "English", 
         "publisher_id" : "oreilly" 
       } 
     ] 
} 
+0

그건 작동합니다! 고마워 톤 줄리언 :) – user1220169