为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕工程0101907 2019-06-28 16:01:31
MongoDB:如何将来自多个集合的数据合并成一个.?我如何(在MongoDB中)将来自多个集合的数据组合到一个集合中?我可以使用地图减少,如果是,那么如何?我会非常感谢一些例子,因为我是一个新手。
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

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
        }
    ]}

重要的是要注意以下几点:

  1. “From”集合,在本例中

    books_selling_data

    无法切分。
  2. “AS”字段将是一个数组,如上面的示例所示。
  3. 中的“localfield”和“foreign field”选项

    $查找阶段

    如果它们在各自的集合中不存在(

    $查阅文档

    有一个很好的例子)。

因此,作为一个结论,如果您想合并这两个集合,在本例中有一个平面复制_Sell字段与总副本一起出售,那么您将不得不工作得更多一些,可能使用的是中间集合,然后是$out最后的收藏品


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 4018 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信