在mongo中,我可以这样做:
db.HI.aggregate({$project: {new_val: '$tags.first'}})
但是,这行不通:
db.HI.aggregate({$project: {new_val: '$my_array.0'}})
这是否意味着聚合不支持这种方式的数组?还有别的办法吗?
目前聚合框架还不支持这个,这里和那里有一个正在进行中的JIRA票据。
另一种方法是先 $unwind
数组,然后 $group
通过_id
键来解构数组文档。在分组文档中,使用 $first
组累加运算符:
db.HI.aggregate([
{
"$unwind": "$my_array"
},
{
"$group": {
"_id": "$_id",
"new_val": { "$first": "$my_array" }
}
}
])