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

MongoDB:如何使用$match和$project定义响应对象,mongodb,Mongodb,我是MongoDB的新手,我正在尝试查询数据库并得到这样一个对象作为响应 { activity: 'Aerial Yoga', participants_12: 10, participants_13_15: 10, participants_16_18: 10, participants_19: 10, } 我将放置一个图像而不是完整的json,以便解释如何获取数据: 我可以过滤,但我仍然不知道如何格式化DB返回给我的对象。到目前为止,我正在使用此查询: db

我是MongoDB的新手,我正在尝试查询数据库并得到这样一个对象作为响应

{
   activity: 'Aerial Yoga',
   participants_12: 10,
   participants_13_15: 10,
   participants_16_18: 10,
   participants_19: 10,
}
我将放置一个图像而不是完整的json,以便解释如何获取数据:

我可以过滤,但我仍然不知道如何格式化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是的,
$aggregate
将为您完成这项工作。在
$project
步骤中,您可以指定truthy值应包含或不包含现有字段,但您也可以,这是一个非常简单的示例:

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',
    ...
  } }
]) 

希望能有所帮助。

谢谢您的回答!DB没有抱怨查询,但它看起来像是在一个无限循环中,因为它永远不会返回结果,它永远在加载。我想这是由于我存储的文档中的某些内容。请问您使用的是什么界面?是MongoDB外壳吗?我用的是Studio 3T。我在Robomongo中尝试过,它返回了一个空对象,mongo Shell中也发生了同样的情况如果你移除
$project
阶段,它仍然是空的吗?哦,我看了屏幕截图,我发现你要找的字段也埋得更深。