例如,如果我想简化嵌套doc的结果集,请将field score.date作为score_date获取,以获得平坦的结果
答案 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
}