Mongodb是否具有SQL“As”功能?

时间:2015-06-06 17:31:11

标签: mongodb

例如,如果我想简化嵌套doc的结果集,请将field score.date作为score_date获取,以获得平坦的结果

1 个答案:

答案 0 :(得分:1)

是的,可以通过 aggregation framework 来实现,特别是您希望使用 $project 运算符。这会重新整形流中的每个文档,例如添加新字段或删除现有字段。对于每个输入文档,输出一个文档。使用您的示例,假设您的集合包含具有此架构的文档:

{
    "_id" : ObjectId("557330473a79b31f0c805db3"),
    "player": "A",
    "score": {
        "date": ISODate("2015-05-30T15:14:48.000Z"),
        "value": 2
    }
}

然后,您将聚合管道中的$ project运算符应用为:

db.collection.aggregate([
    {
        "$project": {
            "player": 1,
            "score_date": "$score.date",
            "score_value": "$score.value"
        }
    }
]);

<强>结果

/* 0 */
{
    "result" : [ 
        {
            "_id" : ObjectId("557330473a79b31f0c805db3"),
            "player" : "A",
            "score_date" : ISODate("2015-05-30T15:14:48.000Z"),
            "score_value" : 2
        }
    ],
    "ok" : 1
}