【问题标题】:MongoDB - Project array subfield with aggregationMongoDB - 具有聚合的项目数组子字段
【发布时间】:2016-01-25 08:22:03
【问题描述】:

拥有这份基本文件:

{
  "_id": "userID",
  "name": "User Name",
  "profiles": [
    {
      "level": 1,
      "bar": {
        "_id": "bar1ID",
        "name": "Bar Name"
      }
    },
    {
      "level": 1,
      "bar": {
        "_id": "bar2ID",
        "name": "Bar 2 Name"
      }
    }
  ]
}

我需要删除一些字段,并重新分配 bar 字段,使其仅包含 _id:

{
  "_id": "userID",
  "profiles": [
    {
      "level": 1,
      "bar": "bar1ID"
    },
    {
      "level": 1,
      "bar": "bar2ID"
    }
  ]
}

与UserID匹配,使用mongo聚合框架

【问题讨论】:

标签: mongodb aggregation-framework


【解决方案1】:

使用.aggregate() 方法。

管道中的唯一阶段是 $project 阶段,您可以在其中使用 $map 运算符。

db.collection.aggregate([
    { "$project": { 
        "profiles": { 
            "$map": { 
                "input": "$profiles", 
                "as": "profile", 
                "in": { 
                    "level": "$$profile.level",
                    "bar": "$$profile.bar._id" 
                } 
            } 
        } 
    } }
])

返回:

{
        "_id" : "userID",
        "profiles" : [
                {
                        "level" : 1,
                        "bar" : "bar1ID"
                },
                {
                        "level" : 1,
                        "bar" : "bar2ID"
                }
        ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多