MongoDB:如何使用$ match和$ project定义响应对象

时间:2017-05-15 16:57:16

标签: mongodb

我是MongoDB的新手,我正在尝试查询数据库并在响应中获取这样的对象。

{
   activity: 'Aerial Yoga',
   participants_12: 10,
   participants_13_15: 10,
   participants_16_18: 10,
   participants_19: 10,
}

我将放置一个图像而不是完整的json,以便我可以解释如何获取数据: enter image description here

我可以过滤,但我仍然不知道如何格式化DB返回给我的对象。到目前为止我正在使用此查询:

db.applications.aggregate([
    { $match : {application_number:'SL-O2-2017-05-15-000230', 'sport_activity_list.value.0.properties.sport_activity.value':'Aerial Yoga'}},
    { $project : { _id: 0,  "sport_activity_list.value":1,} }
]) 

如何达到我想要的效果?我应该使用$ project吗?我正在使用mongodb的 v3.2.8

1 个答案:

答案 0 :(得分:1)

是的,$aggregate会为您完成此操作。在$project步骤中,您可以指定现有字段应包含或不包含在truthy值中,但您也可以included computed fields,这是一个非常简单的示例:

db.applications.aggregate([
  { $match : {application_number:'SL-O2-2017-05-15-000230', 'sport_activity_list.value.0.properties.sport_activity.value':'Aerial Yoga'}},
  { $project : {
    _id: 0, 
    value: '$sport_activity_list.value.0.properties.sport_activity.value',
    participants_12: '$sport_activity_list.value.0.properties.participants_12.value',
    ...
  } }
]) 

希望有所帮助。