Mongodb,Aggregate-如何使用$reverseArray,然后在返回的数组上使用$cond?
我试图在$project下同时使用$reverseArray和$cond。 但$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
{
_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
}}
}
]