我们可以在$project语句中设置一个新的键等于一个数组元素吗?



在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" }
        }
    }
])

最新更新