小编use*_*368的帖子

如何使用聚合框架创建新的数组字段

我开始使用mongoDb而且我遇到了一个简单的用例.

假设我有一个集合'aCollection',其条目如下:

{ 
    _id: ObjectId(123),
    lat: 48,56623,
    long: 2,56332
}
Run Code Online (Sandbox Code Playgroud)

我想用这样的条目创建一个新的集合:

{ 
    _id: ObjectId(123),
    lat: 48,56623,
    long: 2,56332,
    geometry : { 
        type: "Point",
        coordinates: [48,56623, 2,56332]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想到了聚合框架:

db.aCollection.aggregate([{$project: { 
    _id: 1,
    lat: 1,
    long: 1,
    geometry: { 
        type: {$concat: ["Point"]},
        coordinates: ["$lat", "$long"]
    }
}}])
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我得到这个例外:

"异常:对象表达式中不允许的字段类型数组(位于'坐标')"

以下聚合正在起作用,但它不会产生预期的结果:

db.aCollection.aggregate([{$project: { 
    _id: 1,
    lat: 1,
    long: 1,
    geometry: { 
        type: {$concat: ["Point"]},
        coordinates: "$lat"
    }
}}])
Run Code Online (Sandbox Code Playgroud)

如何在没有聚合框架的情况下使用聚合框架2)继续创建此集合1)

谢谢

mongodb mongodb-query aggregation-framework

8
推荐指数
2
解决办法
9970
查看次数