MongoDB聚合条件推送,固定数组长度为

时间:2017-12-11 17:11:30

标签: javascript mongodb

场景:会员可以从4种不同的活动中选择(是/否)。

基于以下输入,

[
 {
  name:"member1",
  activity:"activity1",
  selected:true
 },
 {
  name:"member1",
  activity: "activity3",
  selected:false
 },
 {
  name:"member2",
  activity:"activity2",
  selected:true
 },
 {
  name:"member2",
  activity: "activity4",
  selected:false
 }

]

需要如下结果,按活动1到4的顺序显示成员对所有4个活动的选择(包括用户尚未做出决定的活动)

   [
     {
      name:"member1",
      activities:[true,null,false,null]
     },
     {
      name:"member2",  
      activities:[null,true,null,false]
     }
    ]

我尝试了以下代码,

   db.collection("MemberActivities").aggregate(
    [
        {
        $group:
            {
            _id: "$MemberName",
            activities: { $push: "$selected"}
            }
        }
    ]

但是,它只包含用户做出决定的活动(是/否)。

[
     {
      _id:"member1",
      activities:[true,false]
     },
     {
      _id:"member2",  
      activities:[true,false]
     } ]

请指导如何获得理想的结果。

0 个答案:

没有答案