考虑这个文件
{
"_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不支持,那么不是任何其他选项,除了您只是转换光标而不是。