使用聚合框架从字段的值中投影多个文档

时间:2017-11-15 07:02:13

标签: mongodb aggregation-framework

考虑这个文件

{ 
    "_id" : ObjectId("56d06614070b7f2b117b23db"), 
    "name" : "joe", 
    "value" : 3, 
}

我需要获得以下聚合结果:

[{ 
    "name" : "joe", 
},
{ 
    "name" : "joe", 
},
{ 
    "name" : "joe", 
}]

您是否了解如何使用聚合框架?

1 个答案:

答案 0 :(得分:1)

您可以使用$range

db.collection.aggregate([
  { "$project": {
    "_id": 0,
    "name": { 
      "$map": {
        "input": { "$range": [0,"$value"] },
        "in": "$name"
      }
    }
  }},
  { "$unwind": "$name" }
])

这实际上将[0,1,2]作为输入数组提供给$map,您可以从中发出重复"name"的每个值。因此,文档中的"$value"字段将用作要生成的数组的上限或“长度”。

如果您的MongoDB不支持,那么不是任何其他选项,除了您只是转换光标而不是。