Mongodb - 如何转换数组

时间:2017-10-11 20:22:46

标签: mongodb aggregation-framework

我将数据文件从外部源导入我的数据库。此数据在嵌套对象的数组中嵌套了对象。例如:

{ 
"_id" : ObjectId("59de680a8a042e19b4ac4895"), 
"_embedded" : {
    "identification" : [
        {
            "name" : "Bill Brasky", 
            "id" : "brasky9z5", 
            "type" : "Client"
        }, 
        {
            "name" : "Merle Haggard", 
            "id" : "mh2017", 
            "type" : "Vendor"
        }, 
        {
            "name" : "Captain American", 
            "id" : "1a1a1a1", 
            "type" : "Client"
        }
    ]
}}

我想使用汇总操作只查看' id'和'键入'值。我知道如果没有数组或嵌套文档,如何使用聚合返回结果。

db.users.aggregate(
{ $project : {
    _id : 0 ,
    id : 1 ,
    type : 1     
}})

我想我需要使用$ unwind但是我的大脑正在蜿蜒曲折。如何更新我的聚合操作以投影我的必填字段?

1 个答案:

答案 0 :(得分:0)

使用$map转换嵌入式数组。

这样的东西
db.users.aggregate({
  "$addFields": {
    "_embedded.identification": {
      "$map": {
        "input": "$_embedded.identification",
        "as": "result",
        "in": {
          "id": "$$result.id",
          "type": "$$result.type"
        }
      }
    }
  }
})