2017-04-09 5 views
2

私はMongo文書の提案に従って親を持つようにしました&子コレクションとしての子コレクションの子コレクションは、子コレクションとして成長する。 https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/MongoDB/Mongoose 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

関連する問題