MongoDB:如何将来自多个集合的数据合并成一个.?

MongoDB:如何将来自多个集合的数据合并成一个.?

我如何(在MongoDB中)将来自多个集合的数据组合到一个集合中?

我可以使用地图减少,如果是,那么如何?

我会非常感谢一些例子,因为我是一个新手。


慕工程0101907
浏览 4024回答 3
3回答

叮当猫咪

MongoDB3.2现在允许将来自多个集合的数据通过$查找聚合阶段..作为一个实际例子,让我们假设您有关于书籍的数据分成两个不同的集合。第一个集合,称为books具有以下数据:{     "isbn": "978-3-16-148410-0",     "title": "Some cool book",     "author": "John Doe"}{     "isbn": "978-3-16-148999-9",     "title": "Another awesome book",     "author": "Jane Roe"}和第二个收藏品,叫做books_selling_data具有以下数据:{     "_id": ObjectId("56e31bcf76cdf52e541d9d26"),     "isbn": "978-3-16-148410-0",     "copies_sold": 12500}{     "_id": ObjectId("56e31ce076cdf52e541d9d28"),     "isbn": "978-3-16-148999-9",     "copies_sold": 720050}{     "_id": ObjectId("56e31ce076cdf52e541d9d29"),     "isbn": "978-3-16-148999-9",     "copies_sold": 1000}要合并这两个集合,只需通过以下方式使用$lookup:db.books.aggregate([{     $lookup: {             from: "books_selling_data",             localField: "isbn",             foreignField: "isbn",             as: "copies_sold"         }}])在此聚合之后,books集合如下所示:{     "isbn": "978-3-16-148410-0",     "title": "Some cool book",     "author": "John Doe",     "copies_sold": [         {             "_id": ObjectId("56e31bcf76cdf52e541d9d26"),             "isbn": "978-3-16-148410-0",             "copies_sold": 12500         }     ]}{     "isbn": "978-3-16-148999-9",     "title": "Another awesome book",     "author": "Jane Roe",     "copies_sold": [         {             "_id": ObjectId("56e31ce076cdf52e541d9d28"),             "isbn": "978-3-16-148999-9",             "copies_sold": 720050         },         {             "_id": ObjectId("56e31ce076cdf52e541d9d28"),             "isbn": "978-3-16-148999-9",             "copies_sold": 1000         }     ]}重要的是要注意以下几点:“From”集合,在本例中books_selling_data无法切分。“AS”字段将是一个数组,如上面的示例所示。中的“localfield”和“foreign field”选项$查找阶段如果它们在各自的集合中不存在($查阅文档有一个很好的例子)。因此,作为一个结论,如果您想合并这两个集合,在本例中有一个平面复制_Sell字段与总副本一起出售,那么您将不得不工作得更多一些,可能使用的是中间集合,然后是$out最后的收藏品
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB