Mongodb,Aggregate-如何使用$reverseArray,然后在返回的数组上使用$cond?

Mongodb,Aggregate-如何使用$reverseArray,然后在返回的数组上使用$cond?,mongodb,mongodb-query,aggregation-framework,aggregate,Mongodb,Mongodb Query,Aggregation Framework,Aggregate,我试图在$project下同时使用$reverseArray和$cond。 但$cond下的条件不起作用。我有一个对象数组,我想先反转,然后应用一些条件 示例数据库: { _id : 1, arr:[ {name : 'a',cf:0 , num : 1}, {name : 'b',cf:1, , num : 1}, {name : 'b',cf:0, , num : 2}, {name : 'a',cf:1, , num

我试图在$project下同时使用$reverseArray和$cond。 但$cond下的条件不起作用。我有一个对象数组,我想先反转,然后应用一些条件

示例数据库:

{
    _id : 1,
    arr:[
       {name : 'a',cf:0 , num : 1},
       {name : 'b',cf:1, , num : 1},
       {name : 'b',cf:0, , num : 2},
       {name : 'a',cf:1, , num : 2},
       {name : 'a',cf:0, , num : 3},
       {name : 'b',cf:1, , num : 3},
       {name : 'a',cf:1, , num : 4}
    ]
}
我正在尝试使用的查询:

 [
   {
       $project:{reverseArr : {$reverseArray:arr},
                 query1:{$cond :
                 {
                  $if : {
                   $and: [
                    {$eq: ['$reverseArr.name', 'a']},
                    {$eq: ['$reverseArr.cf', 0]}
                   ]
                  },then: 1,else: 0
             }}
        }
   }
 ]
因此,通过使用上面的查询,我希望得到数组{name:'a',cf:0,num:3}末尾的第三个

但是$cond与所需对象不匹配。我曾尝试在$project之后使用$unwind,但这对我没有帮助

我做错了什么? 我如何才能实现我正在努力做的事情? 任何相关问题都会有所帮助。

如果需要使用$reverseArray,请尝试:


尝试在项目之前使用$unwind。那么你就不需要$reverseArray了,不知道你为什么需要它?然后,这将从阵列中提取所有元素,以便与$cond onHi@N3i1匹配。我需要反转阵列。我可以在一个聚合查询中使用2$project吗?
 [
   { $project:{reverseArr : {$reverseArray:arr} },
   { $unwind : “reverseArr” },
   { $project:{ query1:{$cond :
             {
              $if : {
               $and: [
                {$eq: ['$reverseArr.name', 'a']},
                {$eq: ['$reverseArr.cf', 0]}
               ]
              },then: 1,else: 0
         }}
    }
 ]