我有一个充满这样的文件的集合。
{
"_id" : ObjectId("5696db8a049c1bb2ecaaa10f"),
"resultSets" : [
{
"headers" : [ "A", "B" ],
"data" : [
[ 0, 1 ]
]
},
{
"headers" : [ "C", "D" ],
"data" : [
[ 2, 3 ]
]
}
]
}
我想使用聚合来投影此文档。
{ C: 2, D: 3 }
只是想知道最好的方法是什么。
答案 0 :(得分:0)
如果您使用的是MongoDB 3.2,那么 $arrayElemAt
会在获得所需的聚合输出方面发挥很大作用,尤其是处理arrays。
运行以下聚合管道,该管道使用 $arrayElemAt
运算符在新键中返回所需的值:
var pipeline = [
{
"$match": { "resultSets.headers": { "$in": [ "C", "D" ] } }
},
{ "$unwind": "$resultSets" },
{
"$match": { "resultSets.headers": { "$in": [ "C", "D" ] } }
},
{
"$project": {
"_id": 0,
"C": { "$arrayElemAt": [ "$resultSets.data", 0 ] },
"D": { "$arrayElemAt": [ "$resultSets.data", 1 ] }
}
}
]
db.collection.aggregate(pipeline);